Create a report based on another

i've following question. I have a report A composed by an union of two queries.
Select X,Y from Subject Area UNION Select W,Z from Subject Area
Is possible create another report which select any fields of the report A?
Select Y,Z from (select X,Y from Subject Area UNION Select W,Z from Subject Area) where ....

The problem is that my union:
Select x,y from Subject Area (A) UNION Select z,w from Subject Area (B)
retrieves following data:
Jan 3500€
Jan cast(null as int)
Feb 1100€
Feb cast(null as int).
As you see it duplicates each month. First row is the real row, the second is a dummy row. The part (A) of union retrieves real rows, indeed part (B) retrieves dummy rows. In this way, because Jan, Feb, and so on are on x-axis of my chart, it is filled with all months of the year, even if for any months there aren't data in DB.
Now, when i download data i see together real rows and dummy rows, so i woul'd filter so, dummy rows are suppressed. I thought to create another request like that in my previous post.

Similar Messages

  • How to create a report based on a DataSet programatically

    I'm working on a CR 2008 Add-in.
    Usage of this add-in is: Let the user choose from a list of predefined datasets, and create a totally empty report with this dataset attached to is. So the user can create a report based on this dataset.
    I have a dataset in memory, and want to create a new report in cr2008.
    The new report is a blank report (with no connection information).
    If I set the ReportDocument.SetDataSource(Dataset dataSet) property, I get the error:
    The report has no tables.
    So I must programmatically define the table definition in my blank report.
    I found the following article:, and came up with something like this:
    internal class NewReportWorker : Worker
          public NewReportWorker(string reportFileName)
             : base(reportFileName)
    public override void Process()
             DatabaseController databaseController = ClientDoc.DatabaseController;
             Table table = new Table();
             string tabelName = "Table140";
             table.Name = tabelName;
             table.Alias = tabelName;
             table.QualifiedName = tabelName;
             table.Description = tabelName;
             var fields = new Fields();
             var dbField = new DBField();
             var fieldName = "ID";
             dbField.Description = fieldName;
             dbField.HeadingText = fieldName;
             dbField.Name = fieldName;
             dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
             dbField = new DBField();
             fieldName = "IDLEGITIMATIEBEWIJS";
             dbField.Description = fieldName;
             dbField.HeadingText = fieldName;
             dbField.Name = fieldName;
             dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
             // More code for more tables to add.
             table.DataFields = fields;
             //CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo info =
             //   new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
             //info.Attributes.Add("Databse DLL", "xxx.dll");
             //table.ConnectionInfo = info;
             // Here an error occurs.
             databaseController.AddTable(table, null);
             ReportDoc.SetDataSource( [MyFilledDataSet] );
             //object path = @"d:\logfiles\";
             //ClientDoc.SaveAs("test.rpt", ref path, 0);
    The object ClientDoc referes to a ISCDReportClientDocument in a base class:
       internal abstract class Worker
          private ReportDocument _ReportDoc;
          private ISCDReportClientDocument _ClientDoc;
          private string _ReportFileName;
          public Worker(string reportFileName)
             _ReportFileName = reportFileName;
             _ReportDoc = new ReportDocument();
             // Load the report from file path passed by the designer.
             // Create a RAS Document through In-Proc RAS through the RPTDoc.
             _ClientDoc = _ReportDoc.ReportClientDocument;
          public string ReportFileName
                return _ReportFileName;
          public ReportDocument ReportDoc
                return _ReportDoc;
          public ISCDReportClientDocument ClientDoc
                return _ClientDoc;
    But I get an "Unspecified error" on the line databaseController.AddTable(table, null);
    What am i doing wrong? Or is there another way to create a new report based on a DataSet in C# code?

    Have a look at the snippet code below written for version 9 that you might accommodate to CR 2008, it demonstrates how to create a report based on a DataSet programmatically.
    +           * the following two string values can be modified to reflect your system+
    +          ************************************************************************************************/+
    +          string mdb_path = "C:
    program files
    crystal decisions
    crystal reports 9
    xtreme.mdb";    // path to xtreme.mdb file+
    +          string xsd_path = "C:
    customer.xsd";  // path to customer schema file+
    +          // Dataset+
    +          OleDbConnection m_connection;                         // connection+
    +          OleDbDataAdapter m_adapter;                              // adapter+
    +          System.Data.DataSet m_dataset;                         // dataset+
    +          // CR variables+
    +          ReportClientDocument m_crReportDocument;          // report client document+
    +          Field m_crFieldCustomer;+
    +          Field m_crFieldCountry;+
    +          void CreateData()+
    +          {+
    +               // Create OLEDB connection+
    +               m_connection = new OleDbConnection();+
    +               m_connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdb_path;+
    +               // Create Data Adapter+
    +               m_adapter = new OleDbDataAdapter("select * from Customer where Country='Canada'", m_connection);+
    +               // create dataset and fill+
    +               m_dataset = new System.Data.DataSet();+
    +               m_adapter.Fill(m_dataset, "Customer");+
    +               // create a schema file+
    +               m_dataset.WriteXmlSchema(xsd_path);+
    +          }+
    +          // Adds a DataSource using dataset. Since this does not require intermediate schema file, this method+
    +          // will work in a distributed environment where you have IIS box on server A and RAS Server on server B.+
    +          void AddDataSourceUsingDataSet(+
    +               ReportClientDocument rcDoc,          // report client document+
    +               System.Data.DataSet data)          // dataset+
    +          {+
    +               // add a datasource+
    +               DataSetConverter.AddDataSource(rcDoc, data);+
    +          }+
    +          // Adds a DataSource using a physical schema file. This method require you to have schema file in RAS Server+
    +          // box (NOT ON SDK BOX). In distributed environment where you have IIS on server A and RAS on server B,+
    +          // and you execute CreateData above, schema file is created in IIS box, and this method will fail, because+
    +          // RAS server cannot see that schema file on its local machine. In such environment, you must use method+
    +          // above.+
    +          void AddDataSourceUsingSchemaFile(+
    +               ReportClientDocument rcDoc,          // report client document+
    +               string schema_file_name,          // xml schema file location+
    +               string table_name,                    // table to be added+
    +               System.Data.DataSet data)          // dataset+
    +          {+
    +               PropertyBag crLogonInfo;               // logon info+
    +               PropertyBag crAttributes;               // logon attributes+
    +               ConnectionInfo crConnectionInfo;     // connection info+
    +               CrystalDecisions.ReportAppServer.DataDefModel.Table crTable;+
    +               // database table+
    +               // create logon property+
    +               crLogonInfo = new PropertyBag();+
    +               crLogonInfo["XML File Path"] = schema_file_name;+
    +               // create logon attributes+
    +               crAttributes = new PropertyBag();+
    +               crAttributes["Database DLL"] = "crdb_adoplus.dll";+
    +               crAttributes["QE_DatabaseType"] = "ADO.NET (XML)";+
    +               crAttributes["QE_ServerDescription"] = "NewDataSet";+
    +               crAttributes["QE_SQLDB"] = true;+
    +               crAttributes["QE_LogonProperties"] = crLogonInfo;+
    +               // create connection info+
    +               crConnectionInfo = new ConnectionInfo();+
    +               crConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;+
    +               crConnectionInfo.Attributes = crAttributes;+
    +               // create a table+
    +               crTable = new CrystalDecisions.ReportAppServer.DataDefModel.Table();+
    +               crTable.ConnectionInfo = crConnectionInfo;+
    +               crTable.Name = table_name;+
    +               crTable.Alias = table_name;+
    +               // add a table+
    +               rcDoc.DatabaseController.AddTable(crTable, null);+
    +               // pass dataset+
    +               rcDoc.DatabaseController.SetDataSource(DataSetConverter.Convert(data), table_name, table_name);+
    +          }+
    +          void CreateReport()+
    +          {+
    +               int iField;+
    +               // create dataset+
    +               CreateData();+
    +               // create report client document+
    +               m_crReportDocument = new ReportClientDocument();+
    +               m_crReportDocument.ReportAppServer = "";+
    +               // new report document+
    +               m_crReportDocument.New();+
    +               // add a datasource using a schema file+
    +               // note that if you have distributed environment, you should use AddDataSourceUsingDataSet method instead.+
    +               // for more information, refer to comments on these methods.+
    +               AddDataSourceUsingSchemaFile(m_crReportDocument, xsd_path, "Customer", m_dataset);+
    +                              +
    +               // get Customer Name and Country fields+
    +               iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Customer Name", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
    +               m_crFieldCustomer = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
    +               iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Country", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
    +               m_crFieldCountry = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
    +               // add Customer Name and Country fields+
    +               m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCustomer);+
    +               m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCountry);+
    +               // view report+
    +               crystalReportViewer1.ReportSource = m_crReportDocument;+
    +          }+
    +          public Form1()+
    +          {+
    +               //+
    +               // Required for Windows Form Designer support+
    +               //+
    +               InitializeComponent();+
    +               // Create Report+
    +               CreateReport();+
    +               //+
    +               // TODO: Add any constructor code after InitializeComponent call+
    +               //+
    +          }+//=========================================================================

  • Is it possible to schedule a Webi report based on another input, i.e. expose a time in which a process was finished.

    These are Webi, user created reports.
    Is it possible to schedule a Webi report based on another input, i.e. expose a time in which a process was finished (this can be obtained via a SQL call, service call, etc).
    The issue is that if a user schedules a report for 9PM but a process to move data, etc has not completed then that forces the user to keep re-freshing the report hoping that the process has been complete.
    Ideally, in the selection UI add to the dropdown for 'when' the option 'Use Process X completion Time' (since it is a daily report).
    Then starting around 9PM check to see if that 'time" value is populated then refresh (run) the report. Or it could just be a flag that the process has finished.
    User's in the webi environment are asking for this, and moving their reprots to BO is not an option. That's why they have the custom webi enviroment.
    Thank you.

    There is no very good way to create a working event based on a file as the file will need to be deleted as soon as the event is triggered. However there are work around which can be done for this. Here is a link which is discussing about the process..
    Once you have created a file based even in CMC > Events> System Events and made a work around program to delete the file once the event is trigged all you would need to do in webi is in launchpad just schedule > Events > select the file based event from all available system events. Here is a screenshot how to make a report run based on a event..

  • How to create a report  based on selected item from Select list?

    I have created a tables_LOV based on:
    select table_name d, table_name r from user_tab_cols
    where column_name like '%_type%'
    Then I created a page item ListOfTables,  Display as select list and pointing to tables_LOV.
    I run the page, and i can select the table i want from the drop down list.
    How to create a report  based on the selected item? (ex: select * from selected_table)
    many thanks in advance

    Hi Salah,
    Allright, have a look at this page:
    I think that simulates what you're trying to accomplish. I've set up the simplest method I could think of.
    The report is based on an apex collection. If you are not familiar with that, you should study the documentation: APEX_COLLECTION
    To recreate my example you should:
    1) create an (interactive) report on your collection
    SELECT *
       FROM APEX_collections
    WHERE collection_name = 'MY_COLLECTION'
    2) create a page_item select list for the tables you want to display (in my case this is called "P38_TABLES" )
    3) create a dynamic action that triggers on change of your select list page_item. The dynamic action must be a PL/SQL procedure perfoming the following code:
      l_query varchar2(4000);
      l_query := 'select * from '||:P38_TABLES;
      if apex_collection.collection_exists
            ( p_collection_name => 'MY_COLLECTION' )
          ( p_collection_name => 'MY_COLLECTION' );
      end if;
        ( p_collection_name => 'MY_COLLECTION'
        , p_query           => l_query
    Make sure you add your page_item to the "Page Items to Submit" section.
    4) Add an extra true action that does a refresh of the report region.
    Here are two pictures describing the da:
    Good luck and regards,

  • Create a report based on sample data!

    Hello all,
    I would like to get some helps for creating a report based on the following table data in the database:
    Class     |        Name                   |         Student
    1            |        Algebra               |             60
    1            |        Extra Algebra      |             20
    2            |        Calculus              |             80
    2            |        Extra Calculus     |             10
    3            |        Geometry            |             90
    What I expect to have the layout of report should be look like as below:
                               School Register Report
    ClassGroup     |         Name          |    Ontime register   |    Late register   
    1                      |        Algebra        |             60              |           20            
    2                      |       Calculus        |             80              |           10           
    3                      |       Geometry      |             90              |                           
    Please tell it is possible to do it in Crystal Report? Please help with solution. Thanks in advance.

    Assumimg second type always starts with Extra then, create formula
    If like 'Extra*' then mid(, 7,20) else
    Group on this formula
    If like 'Extra*' then else 0
    If not( like 'Extra*') then else 0
    Add Maximum smmaries of these formula to @Name Group footer, suppress details and group header

  • Creating a Report based on different schema objects

    I have a situation in creating Reports for my database performance.
    Let me explain my requirment.
    There are 2 schemas in my database called X, Y
    X owns all the performance related data. But Y has read access on X objects.
    Now in APEX I have a developer DEV1 is mapped to database schema Y through WS1.
    I cannot map DEV1 to database schema X for security reasons.
    When I am trying to create a report as DEV1, it is allowing me to create based on the objects owned by schema Y.
    However it is not allowing me to create a report based on objects owned by X though Y has SELECT privileges on X's objects.
    Can any one help in this?

    This is the query which I am using to build a report
    rollup_timestamp "Date",
    max(decode(target_guid,'199F0B201A3D71A63040BADFAA4F9E90',average,0)) host1,
    max(decode(target_guid,'3FB1329F59339C07E11304B69DC4E594',average,0)) host2
    rollup_timestamp >= to_date('01-10-2009','dd-mm-yyyy') and rollup_timestamp <= sysdate
    GROUP BY rollup_timestamp
    ORDER BY "Date"
    And for your previous question I couldn't even create a page.
    Edited by: user7290747 on 6/01/2010 16:17

  • Can I create a report based on Non-Oracle template?

    I have a Microsoft Word document that contains the entire layout of a report I need to create with Oracle Report 6i. I know that I can create a report based on a template, but as I understand it, I am limited to using Oracle Reports templates. Does Reports support using foreign templates? Thanks for any word in this manner.
    Thomas Morgan

    oracle reports does not support using ms word documents as templates. there is a product in the oracle applications stack, XML publisher, that allows you to inject data into a word template.

  • Best way to create a table based on another table

    I am trying to create a table based on another table with all the data in it. It has large data.
    create table <tablename> as select * from table1.
    Is this the best way of doing it or is there any other way. please advice.

    I am suggested to create new table as
    create table <newtable> as
    select * from <oldtable> where rownum < 1;
    alter table <newtable> compress;
    insert /*+ append */ into <newtable> as select * from <oldtable>;
    but i getting an error saying missing values key words ora- 00926.
    please advice

  • How to get the print the page numbers in a report  based on another report

    I have a requirement in which i need to print the page number based on another report
    example my request set has 3 reports
    1 report prints 1- 100 pages
    2 report page number should start from 101 - 110
    3 report 111-
    Can anyone please let me how to achieve this?
    Thx in advance

    You can create all the three report queries in one report creating separate query in the data model and then create the layout in proper sequence as required.
    If you want to use separate reports only you might try the following:
    In the first report use the after-report trigger and save the total no of pages in a table as a record.
    In the second report fetch the value stored in the table and add it to the Page No. to obtain the Page No for second report.
    Also in the second report use the after-report trigger and update the record created in first record to total no of pages + total no of pages of the first report.
    In the third report fetch the value stored in the table and add it to the Page No. to obtain the Page No for third report.
    Do remember to delete the record created in the table after-report trigger of the third report.
    Hope this helps.
    Best Regards
    Arif Khadas

  • How to create a report based on the portal30.wwsbr_all_items?

    I created items in a folder in a content area. I would like to create a portal report and display the items of the folder of the content area.
    I logged in the database as portala30 and issued the following statement:
    AND FOLDER_ID = 49959;
    (I found out the caid for content area and folder_id for folders
    from the portal30.wwsbr_all_content_areas, and portal30.wwsbr_all_folders.)
    I have a row returned from my query in sqlplus (which is correct).
    Then I go into portal as portal30-> application(based on portal30 schema) -> create a report,
    use the same sql statement that I used above, and I got the following error message at run time:
    Error: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-11230)
    Failed to parse as PORTAL30_PUBLIC - SELECT ID,NAME FROM PORTAL30.WWSBR_ALL_ITEMS order by rowid (WWV-08300)
    Note: I did run the sbrapi.sql to grant access to the content area api to portal30_public.
    What else I am missing?

    I created items in a folder in a content area. I would like to create a portal report and display the items of the folder of the content area.
    I logged in the database as portala30 and issued the following statement:
    AND FOLDER_ID = 49959;Hy i've done the same thing on my Portal and it works.
    The things i've seen is that you must remove the ';' character because you don't need it with the report component.
    Error: ORA-01445: cannot select ROWID from a join view without a key-preserved table (WWV-11230)
    Failed to parse as PORTAL30_PUBLIC - SELECT ID,NAME FROM PORTAL30.WWSBR_ALL_ITEMS order by rowid (WWV-08300)The second thing is that i've got the same error on other report and the solution is to simply add and order by at the end of the statement like this :
    WHERE CAID = 331
    AND FOLDER_ID = 49959
    ORDER BY 2
    I've done this when i've got this error and it solve the problem.
    Best regards
    Arnaud Bontemps
    mail : [email protected]
    web :

  • How to create a report based on the selection of a node of a tree

    I am new to Oracle Apex and I was trying to build a tree and also an interactive report based on the empno column of the emp table.
    I have created a tree based on emp table. Now I want to display records of the employee selected in the tree.
    Here is the tree query:
    select case when connect_by_isleaf = 1 then 0
    when level = 1 then 1
    else -1
    end as status,
    "ENAME" as title,
    null as icon,
    "EMPNO" as value,
    null as tooltip,
    null as link
    from "#OWNER#"."EMP"
    start with "MGR" is null
    connect by prior "EMPNO" = "MGR"
    order siblings by "ENAME"
    Can anyone tell me step by step how to go from here?
    I tried to follow the thread Re: tree question but could not understand much from it.

    The approach for reloading the page and displaying the report is quite simple.
    <li>You start by creating a new page item which would be used to store the selected node ID , eg. P100_SELECTED_NODE (you can make it atext item and change it hidden once everything works as expected)
    <li>Modify the tree query and change the link column in the tree definition SQL query to a link to the same
    for example if your page is 100 , you would make the tree node link to the same page but set the P100SELECTED_NODE with selected node's id_
    This done here
    In this case it would be
    'f?p=&APP_ID.:100:'||:APP_SESSION||'::::P100_SELECTED_NODE:'||EMPNO as link Now when you click on a tree node link , it would come back to the same page, but set the P100_SELECTED_NODE with the empno of the clicked node.
    <li> All that is left to do, is changing your Report so that it refers to the new item inorder to filter the records for this employee i.e empno
    SELECT ...
    WHERE empno= :P100_SELECTED_NODE

  • How to create a report based on radia selection

    I am new bie to Appex, I have a requiment to generate a report based on existing table with the select creditaria. I mean, the select creditaria wil be the radio button, if i click any option the report will change accordingly.
    It is nothing but filter condition but i need to do with the radio button/items. Please give the detail steps
    Thanks in advance.

    First you will need to create the radio group on the page with the report and determine the list of values you would like to filter the report on (dynamic or static). ie:
    select CUST_STATE as display_value, CUST_STATE as return_value
    order by 1Then you will need to update the report's where clause (demo application page 2 example):
    select customer_id, cust_last_name || ', ' || cust_first_name customer_name, CUST_STREET_ADDRESS1 || decode(CUST_STREET_ADDRESS2, null, null, ', ' || CUST_STREET_ADDRESS2) customer_address, cust_city, cust_state, cust_postal_code
    from demo_customers
    where cust_state = :P2_RADIOWith an Interactive Report, make sure you list the radio group item (P2_RADIO) in the "Page Items to Submit" fields in the report region.
    The you can create an on change dynamic action based on the radio group to refresh the Report region. I made a quick example on
    Depending on the number of items in the radio group, you may want to think about using a select list also.

  • Creating a report based on a calendar

    Hi there!
    I would appreciate if anyone helps me with this issue.
    I've to manage a report based on a calendar. It is based on a monthly calendar in which you can see data for each day, then you can drill down to a weekly view and even a daily one (then you can drill down to the data atached to each day). It has to be dynamic because each month is different from the previous one and from the following one...
    Has OBIEE any function that would help on managing this kind of report?
    Thanks in advance.

    I think this is not a drill down issue. It has to do with the creation of a report in a dynamic calendar.
    The issue is to be able to present the events in a way people can understan the time impact they have. In Siebel, you can view all the programed activities (events) as a normal calendar, showing in the days of the week as columns and the weeks as lines. In every interaction (specific day) the report should show all the events that are programed for that day.
    Being OBIEE the reporting plataform, this is a very important report that should allow people to filetr the view by dimension. For example is should show only those events programed for the noth zone, or marked as critical.
    This should alse have the posibility to drill down to the spoecific event-report.
    The difficult part is to be able to create the calendar view in a dynamic way.

  • How to create multi-reports based on one user parameter - URGENT!

    Hi, can any one help me? I want to create multi-reports at one time and each of the reports should be generated based on a parameter :subid. The db schema is like this:
    table projects(sub_id, project_id, value, builder_code)
    The main query is "select builder_code, sum(value) from projects group by builder_code where sub_id = :subid".
    The subid will be from the same table: select distinct sub_id from projects.
    What i hope to do is to create each report for each sub_id (subscription id) one by one.
    Thanks a lot.

    Hi Sean,
    Yes, bursting was introduced in Oracle9i Reports. For 6i, the only option may be to write a utility, which keeps submitting the same command to run the report, but every time with a new subscription ID. The query inside the report will be the same as you suggested in your first post:
    select builder_code, sum(value) from projects group by builder_code where sub_id = :subid
    You utility will have to fetch all the subid's from the table, and keep submitting the report request with each subid (the report requests with different subid's can be either submitted one by one, or all at the same time).

  • Discoverer 4i:i have to create a report based on the two columns

    I have to create a report(workbook) that will have 2 parameters from date & to date.i have to apply a validation that from date should be lesser then to date.Do reply

    The methods described by user564110 will work, but may not give the results you want. The user will enter the dates, the query will run, and if the to_date is lesser than the from_date, the result will be an empty worksheet with a "no rows returned" type of message. There is no way that I can think of that validate the parameters and warn the user prior to runing the worksheet.
    One alternative condition you could try:
    col_date between least(:from_date, :to_date) and greatest(:from_date, :to_date)It won't warn the users, but will still allow the worksheet to return data.

Maybe you are looking for