Union Queries

What are the different types of union queries? I want to union two queries to pull only the records that are different in one of the queries. Is there a union query that does this? Thanks.

UNION Statement
Combine data from one or more SELECT statements.
In Oracle 8i (and above) the UNION command has been largely replaced by the new Analytic Features
Syntax:
SELECT command [{UNION | UNION ALL | INTERSECT | MINUS} SELECT command]
key:
UNION - Combine the unique rows returned by 2 SELECT statements
UNION ALL - Combine the rows returned by 2 SELECT statements (including all duplicates)
INTERSECT - Return only those rows that are in both SELECT statements
MINUS - Return the rows that are in the first SELECT but not the second
To combine more than two SELECTs simply nest the expressions
SELECT expr1 UNION (SELECT expr2 UNION SELECT expr3)

Similar Messages

  • Using SUM BY to limit result of 3 union queries (11g)

    Hey guys,
    First time posting here (btw, I've tried changing my handle name via edit profile here to no success! Ugh!).
    I need to modify a report that's built off of 3 union queries.  Here's a simplified table version of the union result:
    Label
    Year
    Category
    Score
    Ct
    A
    2005
    1a
    4.0
    1
    A
    2005
    2b
    3.5
    1
    A
    2005
    3c
    2.5
    1
    B
    2006
    1a
    2.8
    1
    B
    2006
    2b
    4.0
    1
    Ct is a calculated item where I did a CASE on a field just to get a count of 1 on this column.  I need to limit this result where per label, per year, there are 3 categories.  So, looking at above table, Label A rows will be the only set returned.  To "hopefully" get 3 under the Ct column where there are 3 categories per year, per label, I have tried "SUM(Ct by Year)" but it didn't give the correct result.  I have also tried "SUM(SUM(Ct by Year) by Label)" and that didn't work either (not that I expected it to work).  I also messed around with GROUP BY to no success either.
    Has anyone run into something like this?  Any input/tip is appreciated. THANKS!!
    Twiggy99

    Are you using outer query to get the same?
    btw: What is when you use count instead of sum?

  • Text index for UNION queries.

    Hi All,
    Can anyone please help me in tuning search query mentioned below
    select id from usr1.organizations where lower(ID_official_name)   like  'technology%'
    union
    select id from usr1.organizations where lower(ID_OFFICIAL_NORM_NAME)   like  'technology%'
    union
    select id from usr1.organizations where lower(ID_OFFICIAL_ENG_NAME)   like  'technology%'
    union
    select id from usr1.organizations where lower(ID_OFFICIAL_ENG_NORM_NAME)   like  'technology%'
    union
    select id from usr1.organizations where lower(ID_OFFICIAL_TRANS_NAME)   like  'technology%'
    union
    select id from usr1.ID_ALIAS_NAMEs where lower(ID_ALIAS_NAME)   like  'technology%'
    union
    select id from usr1.ID_ALIAS_NAMEs where lower(ID_ALIAS_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_ALIAS_NAMEs where lower(ID_ALIAS_ENG_NAME)   like  'technology%'
    union
    select id from usr1.ID_ALIAS_NAMEs where lower(ID_ALIAS_ENG_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_ALIAS_NAMEs where lower(ID_ALIAS_TRANS_NAME)   like  'technology%'
    union
    select id from usr1.ID_DOING_BUSINESS_AS_NAMES where lower(ID_dba_name)   like  'technology%'
    union
    select id from usr1.ID_DOING_BUSINESS_AS_NAMES where lower(ID_DBA_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_DOING_BUSINESS_AS_NAMES where lower(ID_DBA_ENG_NAME)   like  'technology%'
    union
    select id from usr1.ID_DOING_BUSINESS_AS_NAMES where lower(ID_DBA_ENG_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_DOING_BUSINESS_AS_NAMES where lower(ID_DBA_TRANS_NAME)   like  'technology%'
    union
    select id from usr1.ID_FKA_NAMES where lower(ID_fka_name)   like  'technology%'
    union
    select id from usr1.ID_FKA_NAMES where lower(ID_fkA_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_FKA_NAMES where lower(ID_fkA_ENG_NAME)   like  'technology%'
    union
    select id from usr1.ID_FKA_NAMES where lower(ID_fkA_ENG_NORM_NAME)   like  'technology%'
    union
    select id from usr1.ID_FKA_NAMES where lower(ID_fkA_TRANS_NAME)   like  'technology%'Here organizations table is the parent table having primary key on id column, and rest all tables are children tables having foreign key on id column referencing to primary key id column in organizations table.
    Planning to implement multiple column(Userdatastore) text index on dummy column appended to organizations table. And write triggers on other child tables to trigger the sync for Text index.
    But not sure whether we can rewrite this above sql query by replacing union into joins, not sure why developer has not done so.
    Can anyone please help me in creating text index for this sql. I do not want to approach cartesian joins as these are having parent-child relationship.
    Oracle Version: 10.2.0.4
    Please let me know if you need more information

    1 .As text index is created in parent table on id column, can we somehow search only from particular columns(Parent or child) by using user_datastore and tags for sectioning it?
    Below are the sql which i need to make use of text index
    select m.id from id_ALIAS_NAMEs an
    join organizations m on(m.id=an.id)
    where lower(ID_ALIAS_NAME)   like  'technology%' and m.id_data_provider<100;
    select M.id,ID_ALIAS_NAME,'ID_ALIAS_NAME' AS NAMETYPE
    from id_alias_names an JOIN organizations m ON m.id=an.id
    where id_data_provider<100 AND coalesce(m.ID_COUNTRY_OF_DOMICILE,m.ID_COUNTRY_OF_INCORPORATION)='US'
    AND LOWER(ID_ALIAS_NAME) like LOWER('TECHNOLOGY%')
    and F_GetFirstWord(ORG_ALIAS_NAME)='TECHNOLOGY'
    The text index must be created on a text column, not a numeric id column. It is common to create it on a dummy column. You can name that column anything you like instead of dummy, like search_columns or some such thing. You can add tags in your procedure, so that your resulting virtual column is like xml data. You can then create a section group, so that you can search within each of those tags. In the example below, I used ctxsys.auto_section_group because it is the simplest to create, but you may get better performance by using another type of section group and naming each individual tag.
    SCOTT@orcl_11gR2> -- tables you already have:
    SCOTT@orcl_11gR2> create table organizations
      2    (id                    number primary key,
      3       id_official_name          varchar2 (10),
      4       id_official_norm_name          varchar2 (10),
      5       id_official_eng_name          varchar2 (10),
      6       id_official_trans_name          varchar2 (10),
      7       id_data_provider          number,
      8       id_country_of_domicile          varchar2 (10),
      9       id_country_of_incorporation  varchar2 (10))
    10  /
    Table created.
    SCOTT@orcl_11gR2> create table id_alias_names
      2    (id                    number references organizations (id),
      3       id_alias_name               varchar2 (10),
      4       id_alias_norm_name          varchar2 (10),
      5       id_alias_eng_name          varchar2 (10),
      6       id_alias_trans_name          varchar2 (10))
      7  /
    Table created.
    SCOTT@orcl_11gR2> create table id_doing_business_as_names
      2    (id                    number references organizations (id),
      3       id_dba_name               varchar2 (10),
      4       id_dba_norm_name          varchar2 (10),
      5       id_dba_eng_name           varchar2 (10),
      6       id_dba_trans_name          varchar2 (10))
      7  /
    Table created.
    SCOTT@orcl_11gR2> create table id_fka_names
      2    (id                    number references organizations (id),
      3       id_fka_name               varchar2 (10),
      4       id_fka_norm_name          varchar2 (10),
      5       id_fka_eng_name           varchar2 (10),
      6       id_fka_trans_name          varchar2 (10))
      7  /
    Table created.
    SCOTT@orcl_11gR2> -- test data:
    SCOTT@orcl_11gR2> insert all
      2  into organizations values (1, 'test', 'name2', 'name3', 'name4', 99, 'US', null)
      3  into organizations values (2, 'name1', 'name2', 'name3', 'name4', 99, null, 'US')
      4  into organizations values (3, 'name1', 'name2', 'name3', 'name4', 99, null, null)
      5  into organizations values (4, 'name1', 'name2', 'name3', 'name4', 101, 'US', 'US')
      6  into organizations values (5, 'technology', 'technology', 'technology', 'technology', 99, 'US', 'US')
      7  select * from dual
      8  /
    5 rows created.
    SCOTT@orcl_11gR2> insert all
      2  into id_alias_names values (1, 'technology', 'name6', 'name7', 'name8')
      3  into id_alias_names values (2, 'technology', 'test', 'name7', 'name8')
      4  into id_alias_names values (3, 'technology', 'name6', 'name7', 'name8')
      5  into id_alias_names values (4, 'technology', 'name6', 'name7', 'name8')
      6  into id_alias_names values (5, 'name5', 'technology', 'technology', 'technology')
      7  select * from dual
      8  /
    5 rows created.
    SCOTT@orcl_11gR2> insert all
      2  into id_doing_business_as_names values (1, 'name9', 'name10', 'name11', 'name12')
      3  into id_doing_business_as_names values (2, 'name9', 'name10', 'name11', 'name12')
      4  into id_doing_business_as_names values (3, 'name9', 'name10', 'test', 'name12')
      5  into id_doing_business_as_names values (4, 'name9', 'name10', 'name11', 'name12')
      6  into id_doing_business_as_names values (5, 'technology', 'technology', 'technology', 'technology')
      7  select * from dual
      8  /
    5 rows created.
    SCOTT@orcl_11gR2> insert all
      2  into id_fka_names values (1, 'name13', 'name14', 'name15', 'name16')
      3  into id_fka_names values (2, 'name13', 'name14', 'name15', 'name16')
      4  into id_fka_names values (3, 'name13', 'name14', 'name15', 'name16')
      5  into id_fka_names values (4, 'name13', 'name14', 'name15', 'test')
      6  into id_fka_names values (5, 'technology', 'technology', 'technology', 'technology')
      7  select * from dual
      8  /
    5 rows created.
    SCOTT@orcl_11gR2> -- revised procedure to join tables with tags:
    SCOTT@orcl_11gR2> create or replace procedure your_proc
      2    (p_rowid in           rowid,
      3       p_clob     in out nocopy clob)
      4  as
      5  begin
      6    for r1 in
      7        (select id,
      8             '<id_official_name>'
      9             || id_official_name
    10             || '</id_official_name><id_official_norm_name>'
    11             || id_official_norm_name
    12             || '</id_official_norm_name><id_official_eng_name>'
    13             || id_official_eng_name
    14             || '</id_official_eng_name><id_official_trans_name>'
    15             || id_official_trans_name
    16             || '</id_official_trans_name>' as tags_and_values
    17         from      organizations
    18         where  rowid = p_rowid)
    19    loop
    20        dbms_lob.writeappend
    21          (p_clob, length (r1.tags_and_values), r1.tags_and_values);
    22        for r2 in
    23          (select '<id_alias_name>'
    24               || id_alias_name
    25               || '</id_alias_name><id_alias_norm_name>'
    26               || id_alias_norm_name
    27               || '</id_alias_norm_name><id_alias_eng_name>'
    28               || id_alias_eng_name
    29               || '</id_alias_eng_name><id_alias_trans_name>'
    30               || id_alias_trans_name
    31               || '</id_alias_trans_name>' as tags_and_values
    32           from   id_alias_names
    33           where  id = r1.id)
    34        loop
    35          dbms_lob.writeappend
    36            (p_clob, length (r2.tags_and_values), r2.tags_and_values);
    37        end loop;
    38        for r3 in
    39          (select '<id_dba_name>'
    40               || id_dba_name
    41               || '</id_dba_name><id_dba_norm_name>'
    42               || id_dba_norm_name
    43               || '</id_dba_norm_name><id_dba_eng_name>'
    44               || id_dba_eng_name
    45               || '</id_dba_eng_name><id_dba_trans_name>'
    46               || id_dba_trans_name
    47               || '</id_dba_trans_name>' as tags_and_values
    48           from   id_doing_business_as_names
    49           where  id = r1.id)
    50        loop
    51          dbms_lob.writeappend
    52            (p_clob, length (r3.tags_and_values), r3.tags_and_values);
    53        end loop;
    54        for r4 in
    55          (select '<id_fka_name>'
    56               || id_fka_name
    57               || '</id_fka_name><id_fka_norm_name>'
    58               || id_fka_norm_name
    59               || '</id_fka_norm_name><id_fka_eng_name>'
    60               || id_fka_eng_name
    61               || '</id_fka_eng_name><id_fka_trans_name>'
    62               || id_fka_trans_name
    63               || '</id_fka_trans_name>' as tags_and_values
    64           from   id_fka_names
    65           where  id = r1.id)
    66        loop
    67          dbms_lob.writeappend
    68            (p_clob, length (r4.tags_and_values), r4.tags_and_values);
    69        end loop;
    70    end loop;
    71  end your_proc;
    72  /
    Procedure created.
    SCOTT@orcl_11gR2> show errors
    No errors.
    SCOTT@orcl_11gR2> -- examples of virtual columns that revised procedure returns:
    SCOTT@orcl_11gR2> declare
      2    v_clob  clob;
      3  begin
      4    for r in
      5        (select rowid, id
      6         from      organizations)
      7    loop
      8        dbms_lob.createtemporary (v_clob, true);
      9        your_proc (r.rowid, v_clob);
    10        dbms_output.put_line (r.id);
    11        dbms_output.put_line (v_clob);
    12        dbms_lob.freetemporary (v_clob);
    13    end loop;
    14  end;
    15  /
    1
    <id_official_name>test</id_official_name><id_official_norm_name>name2</id_official_norm_name><id_official_eng_name>name3
    </id_official_eng_name><id_official_trans_name>name4</id_official_trans_name><id_alias_name>technology</id_alias_name><i
    d_alias_norm_name>name6</id_alias_norm_name><id_alias_eng_name>name7</id_alias_eng_name><id_alias_trans_name>name8</id_a
    lias_trans_name><id_dba_name>name9</id_dba_name><id_dba_norm_name>name10</id_dba_norm_name><id_dba_eng_name>name11</id_d
    ba_eng_name><id_dba_trans_name>name12</id_dba_trans_name><id_fka_name>name13</id_fka_name><id_fka_norm_name>name14</id_f
    ka_norm_name><id_fka_eng_name>name15</id_fka_eng_name><id_fka_trans_name>name16</id_fka_trans_name>
    2
    <id_official_name>name1</id_official_name><id_official_norm_name>name2</id_official_norm_name><id_official_eng_name>name
    3</id_official_eng_name><id_official_trans_name>name4</id_official_trans_name><id_alias_name>technology</id_alias_name><
    id_alias_norm_name>test</id_alias_norm_name><id_alias_eng_name>name7</id_alias_eng_name><id_alias_trans_name>name8</id_a
    lias_trans_name><id_dba_name>name9</id_dba_name><id_dba_norm_name>name10</id_dba_norm_name><id_dba_eng_name>name11</id_d
    ba_eng_name><id_dba_trans_name>name12</id_dba_trans_name><id_fka_name>name13</id_fka_name><id_fka_norm_name>name14</id_f
    ka_norm_name><id_fka_eng_name>name15</id_fka_eng_name><id_fka_trans_name>name16</id_fka_trans_name>
    3
    <id_official_name>name1</id_official_name><id_official_norm_name>name2</id_official_norm_name><id_official_eng_name>name
    3</id_official_eng_name><id_official_trans_name>name4</id_official_trans_name><id_alias_name>technology</id_alias_name><
    id_alias_norm_name>name6</id_alias_norm_name><id_alias_eng_name>name7</id_alias_eng_name><id_alias_trans_name>name8</id_
    alias_trans_name><id_dba_name>name9</id_dba_name><id_dba_norm_name>name10</id_dba_norm_name><id_dba_eng_name>test</id_db
    a_eng_name><id_dba_trans_name>name12</id_dba_trans_name><id_fka_name>name13</id_fka_name><id_fka_norm_name>name14</id_fk
    a_norm_name><id_fka_eng_name>name15</id_fka_eng_name><id_fka_trans_name>name16</id_fka_trans_name>
    4
    <id_official_name>name1</id_official_name><id_official_norm_name>name2</id_official_norm_name><id_official_eng_name>name
    3</id_official_eng_name><id_official_trans_name>name4</id_official_trans_name><id_alias_name>technology</id_alias_name><
    id_alias_norm_name>name6</id_alias_norm_name><id_alias_eng_name>name7</id_alias_eng_name><id_alias_trans_name>name8</id_
    alias_trans_name><id_dba_name>name9</id_dba_name><id_dba_norm_name>name10</id_dba_norm_name><id_dba_eng_name>name11</id_
    dba_eng_name><id_dba_trans_name>name12</id_dba_trans_name><id_fka_name>name13</id_fka_name><id_fka_norm_name>name14</id_
    fka_norm_name><id_fka_eng_name>name15</id_fka_eng_name><id_fka_trans_name>test</id_fka_trans_name>
    5
    <id_official_name>technology</id_official_name><id_official_norm_name>technology</id_official_norm_name><id_official_eng
    _name>technology</id_official_eng_name><id_official_trans_name>technology</id_official_trans_name><id_alias_name>name5</
    id_alias_name><id_alias_norm_name>technology</id_alias_norm_name><id_alias_eng_name>technology</id_alias_eng_name><id_al
    ias_trans_name>technology</id_alias_trans_name><id_dba_name>technology</id_dba_name><id_dba_norm_name>technology</id_dba
    _norm_name><id_dba_eng_name>technology</id_dba_eng_name><id_dba_trans_name>technology</id_dba_trans_name><id_fka_name>te
    chnology</id_fka_name><id_fka_norm_name>technology</id_fka_norm_name><id_fka_eng_name>technology</id_fka_eng_name><id_fk
    a_trans_name>technology</id_fka_trans_name>
    PL/SQL procedure successfully completed.
    SCOTT@orcl_11gR2> -- user_datastore:
    SCOTT@orcl_11gR2> begin
      2    ctx_ddl.create_preference ('your_datastore', 'user_datastore');
      3    ctx_ddl.set_attribute ('your_datastore', 'procedure', 'your_proc');
      4  end;
      5  /
    PL/SQL procedure successfully completed.
    SCOTT@orcl_11gR2> -- dummy column:
    SCOTT@orcl_11gR2> alter table organizations add (dummy varchar2(1))
      2  /
    Table altered.
    SCOTT@orcl_11gR2> -- index with auto_section_group,
    SCOTT@orcl_11gR2> -- must be on a text column, like dummy, not numeric id column:
    SCOTT@orcl_11gR2> create index your_index
      2  on organizations (dummy)
      3  indextype is ctxsys.context
      4  parameters
      5    ('datastore     your_datastore
      6        section group     ctxsys.auto_section_group')
      7  /
    Index created.
    SCOTT@orcl_11gR2> -- example queries:
    SCOTT@orcl_11gR2> select id
      2  from   organizations
      3  where  contains (dummy, 'technology within id_alias_name') > 0
      4  and    id_data_provider < 100
      5  /
            ID
             1
             2
             3
    3 rows selected.
    SCOTT@orcl_11gR2> select m.id, an.id_alias_name, 'ID_ALIAS_NAME' as nametype
      2  from   id_alias_names an join organizations m on m.id = an.id
      3  where  contains (m.dummy, 'technology within id_alias_name') > 0
      4  and    m.id_data_provider < 100
      5  and    coalesce (m.id_country_of_domicile, m.id_country_of_incorporation) = 'US'
      6  /
            ID ID_ALIAS_N NAMETYPE
             1 technology ID_ALIAS_NAME
             2 technology ID_ALIAS_NAME
    2 rows selected.
    SCOTT@orcl_11gR2>

  • View Objects with Union Queries--trouble with primary keys

    Hi,
    I'm working with JDev 11.1.1.3 and am trying to do a couple of things (without success--yet). I am trying to create a master-detail relationship that displays the existing data in a set of 3 tables and later I will be creating forms for inserting and updating.
    The table structure is like this:
    Table: Member
    Field: MemberIdx (PK)
    Field: Data
    Table: CfgPartner
    Field: MemberIdx (PK)
    Field: DocType (PK)
    Field: DocRevision (PK)
    Field: OtherData
    Table: CfgB2BPartner
    Field: MemberIdx (PK)
    Field: DocType (PK)
    Field: DocRevision (PK)
    Field: B2BData
    I have a View Object for the master table (Member). And I have created a 2nd View Object that is a union of the other two tables. There is some data in CfgPartner that doesn't have a matching record in CfgB2BPartner and vice versa. My thinking is that the two tables are related and I would like them to display within the same table on the ADF page.
    My 2nd View Object has this query:
    SELECT CfgPartner.MEMBERIDX,
    CfgPartner.DOCTYPE,
    CfgPartner.DOCREVISION,
    CfgPartner.OTHERDATA,
    CfgB2bpartner.B2BDATA
    FROM CFG_PARTNER CfgPartner, CFG_B2BPARTNER CfgB2bpartner
    WHERE CfgPartner.MEMBERIDX=CfgB2bpartner.MEMBERIDX(+)
    and CfgPartner.DOCTYPE=CfgB2bpartner.DOCTYPE(+)
    and CfgPartner.DOCREVISION=CfgB2bpartner.DOCREVISION(+)
    UNION
    SELECT CfgB2bpartner.MEMBERIDX AS MEMBERIDX1,
    CfgB2bpartner.DOCTYPE AS DOCTYPE1,
    CfgB2bpartner.DOCREVISION AS DOCREVISION1,
    CfgPartner.OTHERDATA,
    CfgB2bpartner.B2BDATA
    FROM CFG_PARTNER CfgPartner, CFG_B2BPARTNER CfgB2bpartner
    WHERE CfgB2bpartner.MEMBERIDX=CfgPartner.MEMBERIDX(+)
    and CfgB2bpartner.DOCTYPE=CfgPartner.DOCTYPE(+)
    and CfgB2bpartner.DOCREVISION=CfgPartner.DOCREVISION(+)
    ORDER BY MEMBERIDX,DOCTYPE,DOCREVISION
    The query is valid and runs fine in the database. However, the error I'm getting in the app module makes it sound like I don't have my primary keys set up correctly. Here is the error: (oracle.jbo.PersistenceException) JBO-26028: View object testCfgPtnrCfgB2BPtnr does not include a primary key attribute Memberidx of entity base CfgB2bpartner.
    In the View Object it shows the attributes Memberidx, Doctype, Docrevision, Memberidx1, Doctype1, and Docrevision1 all as key attributes. The only strange thing I see is the Entity Usage for Memberidx1, Doctype1, and Docrevision1 are all empty and the info column says "Transient".
    Any help would be appreciated.
    -Steve

    Hi,
    I think that to achieve this you need to suround it with another "select from" statement and create alias for the columns
    I created a test with the departments table (assuming that they are two different tables with different attributes) just to see that it works.
    SELECT DEPID1,DEPID2,DEPNAME1,DEPNAME2
    FROM(
    SELECT Departments1.DEPARTMENT_ID AS DEPID1,
               NULL as DEPID2,
           Departments1.DEPARTMENT_NAME AS DEPNAME1,
              NULL as DEPNAME2
    FROM DEPARTMENTS Departments1
    UNION
    SELECT Departments2.DEPARTMENT_ID AS DEPID2,
              NULL as DEPID1,
           Departments2.DEPARTMENT_NAME AS DEPNAME2,
             NULL as DEPNAME1
    FROM DEPARTMENTS Departments2)The resulting VO will have 4 attributes and you can set the primary key to be (DEPID1,DEPID2)
    If your 2 tables have common columns then these columns can have the same alias
    If you have any problems let me know :)
    Gabriel.

  • Question on union queries

    The below query returns two rows. How do I get the same in one row?
    SELECT A, B, C
    FROM (
    SELECT
                             A, B, C
    FROM tableX
    UNION
    SELECT
                             A, B, C
    FROM tableY
    SELECT
                             A, B, C
    FROM tableX
    UNION
    SELECT
                             A, B, C
    FROM tableY
    );

    user10744988 wrote:
    The below query returns two rows. How do I get the same in one row?
    SELECT A, B, C
    FROM (
    SELECT
                             A, B, C
    FROM tableX
    UNION
    SELECT
                             A, B, C
    FROM tableY
    SELECT
                             A, B, C
    FROM tableX
    UNION
    SELECT
                             A, B, C
    FROM tableY
    );posting invalid SQL (above) is a poor way to start.
    How do I ask a question on the forums?
    SQL and PL/SQL FAQ
    how do we know what you expect/desire to be contained in the single row?
    Handle:     user10744988
    Status Level:     Newbie
    Registered:     Dec 26, 2008
    Total Posts:     76
    Total Questions:     34 (24 unresolved)
    why so many unanswered questions?

  • How to make the sql with unions to run faster

    I have the following sql which takes long time to run in sqlplus. This is in oracle 10, can I use hints to speed up the process. Union all brings all rows, but I want to eliminate the duplicates.
    select A.EMPLID,S.OPRID,A.LASTUPDDTTM,A.EMPL_RCD_NBR,A.LAST_NAME,A.FIRST_NAME,A.DEPTID,B.COMPANY,B.PAYGROUP,B.PAY_END_DT,B.OFF_CYCLE,
    B.ERNCD_REG_HRS,B.REG_HRS,0,B.REG_HRLY_EARNS
    from PS_EMPLOYEES A,PS_PAY_EARNINGS B,PS_SCRTY_TBL_DEPT S,PSTREENODE T
    where S.ACCESS_CD = 'Y' and T.SETID = ' ' and T.TREE_NAME = 'DEPT_SECURITY'
    and T.EFFDT = S.TREE_EFFDT and T.TREE_NODE = A.DEPTID and T.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END
    and not exists (select 'X' from PS_SCRTY_TBL_DEPT S1
    where S.OPRID = S1.OPRID
    and S.TREE_NODE_NUM <> S1.TREE_NODE_NUM
    and T.TREE_NODE_NUM between S1.TREE_NODE_NUM
    and S1.TREE_NODE_NUM_END
    and S1.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END)
    and B.EMPLID = A.EMPLID and B.EMPL_RCD_NBR = A.EMPL_RCD_NBR
    and B.SINGLE_CHECK_USE IN ('C', 'N') and (B.REG_HRS<>0 or B.REG_HRLY_EARNS<>0)
    and B.PAY_LINE_STATUS in ('C','F')
    union
    select A.EMPLID,S.OPRID,A.LASTUPDDTTM,A.EMPL_RCD_NBR,A.LAST_NAME,A.FIRST_NAME,A.DEPTID,B.COMPANY,B.PAYGROUP,B.PAY_END_DT,B.OFF_CYCLE,
    B.ERNCD_REG_HRS,B.REG_HRS,0,B.REG_EARNS
    from PS_EMPLOYEES A,PS_PAY_EARNINGS B,PS_SCRTY_TBL_DEPT S,PSTREENODE T
    where S.ACCESS_CD = 'Y' and T.SETID = ' ' and T.TREE_NAME = 'DEPT_SECURITY'
    and T.EFFDT = S.TREE_EFFDT and T.TREE_NODE = A.DEPTID and T.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END
    and not exists (select 'X' from PS_SCRTY_TBL_DEPT S1
    where S.OPRID = S1.OPRID
    and S.TREE_NODE_NUM <> S1.TREE_NODE_NUM
    and T.TREE_NODE_NUM between S1.TREE_NODE_NUM
    and S1.TREE_NODE_NUM_END
    and S1.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END)
    and B.EMPLID = A.EMPLID and B.EMPL_RCD_NBR = A.EMPL_RCD_NBR
    and B.SINGLE_CHECK_USE IN ('C', 'N') and (B.REG_HRS<>0 or B.REG_HRLY_EARNS<>0)
    and B.PAY_LINE_STATUS in ('C','F')
    union
    select A.EMPLID,S.OPRID,A.LASTUPDDTTM,A.EMPL_RCD_NBR,A.LAST_NAME,A.FIRST_NAME,A.DEPTID,B.COMPANY,B.PAYGROUP,B.PAY_END_DT,B.OFF_CYCLE,
    B.ERNCD_OT_HRS,B.OT_HRS,0,B.OT_HRLY_EARNS
    from PS_EMPLOYEES A,PS_PAY_EARNINGS B,PS_SCRTY_TBL_DEPT S,PSTREENODE T
    where S.ACCESS_CD = 'Y' and T.SETID = ' ' and T.TREE_NAME = 'DEPT_SECURITY'
    and T.EFFDT = S.TREE_EFFDT and T.TREE_NODE = A.DEPTID and T.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END
    and not exists (select 'X' from PS_SCRTY_TBL_DEPT S1
    where S.OPRID = S1.OPRID
    and S.TREE_NODE_NUM <> S1.TREE_NODE_NUM
    and T.TREE_NODE_NUM between S1.TREE_NODE_NUM
    and S1.TREE_NODE_NUM_END
    and S1.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END)
    and B.EMPLID = A.EMPLID and B.EMPL_RCD_NBR = A.EMPL_RCD_NBR
    and B.SINGLE_CHECK_USE IN ('C', 'N')
    and (B.OT_HRS<>0 or B.OT_HRLY_EARNS<>0)
    union
    select
    A.EMPLID,S.OPRID,A.LASTUPDDTTM,A.EMPL_RCD_NBR,A.LAST_NAME,A.FIRST_NAME,A.DEPTID,B.COMPANY,B.PAYGROUP,B.PAY_END_DT,B.OFF_CYCLE,
    C.ERNCD,C.OTH_HRS,C.OTH_PAY,C.OTH_EARNS
    from PS_EMPLOYEES A,PS_PAY_EARNINGS B,PS_PAY_OTH_EARNS C,PS_SCRTY_TBL_DEPT S,PSTREENODE T
    where S.ACCESS_CD = 'Y' and T.SETID = ' ' and T.TREE_NAME = 'DEPT_SECURITY'
    and T.EFFDT = S.TREE_EFFDT and T.TREE_NODE = A.DEPTID and T.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END
    and not exists (select 'X' from PS_SCRTY_TBL_DEPT S1
    where S.OPRID = S1.OPRID
    and S.TREE_NODE_NUM <> S1.TREE_NODE_NUM
    and T.TREE_NODE_NUM between S1.TREE_NODE_NUM
    and S1.TREE_NODE_NUM_END
    and S1.TREE_NODE_NUM between S.TREE_NODE_NUM
    and S.TREE_NODE_NUM_END)
    and B.EMPLID = A.EMPLID and B.EMPL_RCD_NBR = A.EMPL_RCD_NBR
    and C.COMPANY = B.COMPANY and C.PAYGROUP = B.PAYGROUP
    and C.PAY_END_DT = B.PAY_END_DT and C.OFF_CYCLE = B.OFF_CYCLE
    and C.PAGE_NBR = B.PAGE_NBR and C.LINE_NBR = B.LINE_NBR
    and C.ADDL_NBR = B.ADDL_NBR and B.SINGLE_CHECK_USE IN ('C', 'N')
    and (C.OTH_HRS<>0 or C.OTH_PAY<>0 or C.OTH_EARNS<>0)
    and B.PAY_LINE_STATUS in ('C','F')

    UNION will eliminate the duplicates. If you are seeing rows that look like duplicates, there must be something different about them that you are missing.
    If there is some set of rows that is common to all of the UNION queries and expensive to retrieve, you might try subquery factoring, e.g:
    WITH common_set AS
        ( SELECT somecols
          FROM   sometab x, othertab y
          WHERE  y.key = x.key
          AND    etc )
    SELECT a,b,c
    FROM   common_set c, table1 t
    WHERE  t.key = c.key
    UNION
    SELECT a,b,c
    FROM   common_set c, table2 t
    WHERE  t.key = c.key
    UNION
    SELECT a,b,c
    FROM   common_set c, table2 t
    WHERE  t.key = c.keyThe usual advice applies for tuning requests applies though:
    <ul><li>{thread:id=863295}</li>
    <li>{thread:id=501834}</li>
    <li>Troubleshooting Bad Execution Plans</li>
    <li>Writing Good SQL</li></ul>

  • Navigating from a UNION Query

    I have a report (say Report1) where five queries are UNIONed together to give a result set. I have a navigation on one particular column (say Customer ID) for navigating to a different report (Report2) where Customer ID IS PROMPTED in Report2. But when I click on Customer ID = A11 in Report1, it takes me to Report2 but shows all rows whereas I expect only the rows corresponding to Customer ID A11. To verify the behavior, I created another report (Report3) wherein I had five UNION queries and this feature works fine in the new report. Report1 and Report3 are similar in design but Report3 is much smaller and simpler than Report1. Is there anything I can do to make this thing work in the report. It would take a lot of time recreate the report from scratch. Thanks.

    I figured it out. Navigation does not work in Pivot Table. So, if you click on a customer name in the Pivot Table view, and the customer name is "Is Prompted" in the target report, the filter value will not be applied in the target report.

  • Crystal 8.5! Set table locations at run time to queries

    Hopefully some people still remember version 8.5...
    I have a number of reports which all work from a single database, this can be either Access or SQL Server, I'm currently testing on Access. I would like to use the same reports but print them for multiple databases, all of which have the same schema. To do this I'm creating UNION queries in one of the databases and I now want to change the location of the tables in the report to use these union queries instead.
    For example, say the report uses table "Customer" in db1 but I have also have db2 and db3 with the same table, I'm enumerating all fields used in the report and creating a union in db1 something like:
    SELECT field1, field2 FROM Customer IN 'db1.mdb'
    UNION SELECT field1, field2 FROM Customer IN 'db2.mdb'
    UNION SELECT field1, field2 FROM Customer IN 'db3.mdb'
    Now I've tested this in Crystal Reports itself, i.e. setting the location to the new tables, and it works OK. I'm having to use an OLEDB connection otherwise the links get removed. When I try to set the location in code I just get no data on the report even though there is data available.
    In code I'm going through all tables (and all tables in all sub reports) and I've tried setting the Location property to the name of the union, I've tried SetTableLocation "<path to db>", "<union name>" and I've tried both using SetLogOnInfo "<path to db>" as well.
    I'm thinking perhaps converting the report to active data and plugging in an ADO recordset could be a solution but I'm not sure how feasible that is from code (i.e. converting the database driver from either pdsoledb.dll or pdbdao.dll to pdsmon.dll and creating a ttx on the fly...).
    Any help much appreciated.

    Hi,
    SetTableLocation should work but you need to make sure you call it for each of the tables in the report or in this case the Union. 
    Just like in the report designer when you set the location you need to point to the table you want to change.  Even though you get the prompt asking to set the same location for all the tables, it's doing the same thing for you. 
    Hope this helps,
    Brian

  • Can we change filter column values in a union query using Dashboard prompt

    Hi,
    I have a requirement in which have to draw a chart report for last six months?.
    When i query against database, my query got different where clause for open month and close month.
    Say for july month bar, it got close month as july and open month as july, june, may. Like this, for june month bar, it has to have close month as june and open month as june, may, april. like this, i created six union queries using repository variable.
    Want to give control using dashboard prompt for close month and open month?
    my query look like this.
    select close month1, fact1 from table1
    where close month = july and open month in (july, june, may)
    UNION
    select close month2, fact2 from table1
    where close month = june and open month in (june, may, april)
    UNION
    select close month3, fact3 from table1
    where close month = may and open month in (may, april, march)
    UNION
    select close month4, fact4 from table1
    where close month = april and open month in (april, march, february)
    UNION
    select close month5, fact5 from table1
    where close month = march and open month in (march, february, january)
    UNION
    select close month6, fact6 from table1
    where close month = february and open month in (february, january, december)
    Welcome your suggestions on this?.
    Thanks

    Hi Karol,
    Yes the prompt is working fine when i put this following method under the "Button" Component.
    APPLICATION.openPromptDialog(800, 600);
    Somehow the when i use the "Input Field" and use the "Button" Component and write this following logic inside it i don't see the prompt is not taking the values what i am entering in input field i assume that its issue with data-source not getting refreshed.
    Variable=INPUTFIELD_1.getValue();
    APPLICATION.setVariableValue("PercentageIncrease",Variable);
    Thanks,
    Kumar

  • Using Queries in Crystal Reports

    Hi all,
    I know that creating a report in Crystal Reports is essentially creating a query, but I wanted to know if anyone knew of any ways to develop queries using the Query Generator in B1 and then use that query for a report in Crystal, possibly referencing or copying it?
    Also, if anyone is familiar with union queries or sub queries, could you explain their more common uses?
    Thanks for the help,
    Todd

    Hi Todd Linscott,
    We have using this type of query in SAP in Query Generator
    SELECT  T0.[DocNum] as 'Invoice No.', T0.[DOCDATE] as 'Invoice Date', T0.[CardName] as 'Customer Name' ,
    FROM OINV WHERE  T0.[DOCDATE] >=[%0] AND T0.[DOCDATE]<=[%1]
    For Crystal Report
    SELECT  T0.[DocNum] as 'Invoice No.', T0.[DOCDATE] as 'Invoice Date', T0.[CardName] as 'Customer Name' ,
    FROM OINV WHERE  T0.[DOCDATE >= {?FromDate}  AND T0.[DOCDATE ]< = {?ToDate}
    Pass Parameter in Crystal Report in thats type of syntax
    When you have to add command Right side Parameter button will appear
    For Layout pass
    {?@Dockey}
    This is must.
    Thanks,
    Srujal Patel

  • Prompts for Combine similar request (Union query)

    I have been given 5 tables for creating one report out of each table. I created aliases and
    necessary self joins. I now need a summaryreport that combines these five tables. I tried the
    "combine similar request" and the report functions fine. Now I have to create two prompts, one for
    country and one for job. These are fields available in 4 tables and have the same format alongwith
    the same datatypes. Please help me with this.
    Table 1 Report A
    Table 2 Report B
    Table 3 Report C
    Table 4 Report D
    Table 5 Report E
    Table 1 - Table 4 contains Country and Job field which is of the same format and datatype.
    Table 5 does not have these and its not necessary for us to prompt this.
    This has no star schema setup and I am not in a position to get it done as well. I considered each
    table to be a fact table and created aliases, selfjoins etc. Please help with the procedure to
    create the two dashboard prompts. If I choose USA then the first four amongst the union queries
    should reflect data for the USA. The same applies for Job.

    Hello
    Thanks for the reply.
    My problem here is that I have 5 different tables with country fields in them. They are of the same format and datatype but there is no join between these tables. If I choose one Country field from any particular table, then the combine similar request doesnt seem to take it for other queries where the fields come from a different table.
    eg.
    Table 1 - table 5 have country fields
    I choose to create a prompt based on Country from Table 1. The union query doesnt seem to reflect on filtering values on the queries from other tables. It would filter only the values from table 1.
    Please let me know as to what can be done!

  • E-Rows = NULL and A-Rows=42M? Need help in understanding why.

    Hi,
    Oracle Standard Edition 11.2.0.3.0 CPU Oct 2012 running on Windows 2008 R2 x64. I am using Oracle 10g syntax for WITH clause as the query will also run on Oracle 10gR2. I do not have a Oracle 10gR2 environment at hand to comment if this behaves the same.
    Following query is beyond me. It takes around 2 minutes to return the "computed" result set of 66 rows.
    SQL> WITH dat AS
      2          (SELECT 723677 vid,
      3                  243668 fid,
      4                  TO_DATE ('06.03.2013', 'dd.mm.yyyy') mindt,
      5                  TO_DATE ('06.03.2013', 'dd.mm.yyyy') maxdt
      6             FROM DUAL
      7           UNION ALL
      8           SELECT 721850,
      9                  243668,
    10                  TO_DATE ('06.02.2013', 'dd.mm.yyyy'),
    11                  TO_DATE (' 22.03.2013', 'dd.mm.yyyy')
    12             FROM DUAL
    13           UNION ALL
    14           SELECT 723738,
    15                  243668,
    16                  TO_DATE ('16.03.2013', 'dd.mm.yyyy'),
    17                  TO_DATE ('  04.04.2013', 'dd.mm.yyyy')
    18             FROM DUAL)
    19      SELECT /*+ GATHER_PLAN_STATISTICS */ DISTINCT vid, fid, mindt - 1 + LEVEL dtshow
    20        FROM dat
    21  CONNECT BY LEVEL <= maxdt - mindt + 1
    22  order by fid, vid, dtshow;
    66 rows selected.
    SQL>
    SQL> SELECT * FROM TABLE (DBMS_XPLAN.display_cursor (NULL, NULL, 'ALLSTATS LAST'));
    PLAN_TABLE_OUTPUT
    SQL_ID  9c4vma4mds6zk, child number 0
    WITH dat AS         (SELECT 723677 vid,                 243668 fid,
                TO_DATE ('06.03.2013', 'dd.mm.yyyy') mindt,
    TO_DATE ('06.03.2013', 'dd.mm.yyyy') maxdt            FROM DUAL
    UNION ALL          SELECT 721850,                 243668,
       TO_DATE ('06.02.2013', 'dd.mm.yyyy'),                 TO_DATE ('
    22.03.2013', 'dd.mm.yyyy')            FROM DUAL          UNION ALL
        SELECT 723738,                 243668,                 TO_DATE
    ('16.03.2013', 'dd.mm.yyyy'),                 TO_DATE ('  04.04.2013',
    'dd.mm.yyyy')            FROM DUAL)     SELECT /*+
    GATHER_PLAN_STATISTICS */ DISTINCT vid, fid, mindt - 1 + LEVEL dtshow
        FROM dat CONNECT BY LEVEL <= maxdt - mindt + 1 order by fid, vid,
    dtshow
    Plan hash value: 1865145249
    | Id  | Operation                              | Name | Starts | E-Rows | A-Rows |   A-Time   |  OMem |  1Mem | Used-Mem |
    |   0 | SELECT STATEMENT                       |      |      1 |        |     66 |00:01:54.64 |       |       |          |
    |   1 |  SORT UNIQUE                           |      |      1 |      3 |     66 |00:01:54.64 |  6144 |  6144 | 6144  (0)|
    |   2 |   CONNECT BY WITHOUT FILTERING (UNIQUE)|      |      1 |        |     42M|00:01:04.00 |       |       |          |
    |   3 |    VIEW                                |      |      1 |      3 |      3 |00:00:00.01 |       |       |          |
    |   4 |     UNION-ALL                          |      |      1 |        |      3 |00:00:00.01 |       |       |          |
    |   5 |      FAST DUAL                         |      |      1 |      1 |      1 |00:00:00.01 |       |       |          |
    |   6 |      FAST DUAL                         |      |      1 |      1 |      1 |00:00:00.01 |       |       |          |
    |   7 |      FAST DUAL                         |      |      1 |      1 |      1 |00:00:00.01 |       |       |          |
    --------------------------------------------------------------------------------------------------------------------------If I take out one of the UNION queries, the query returns in under 1 second.
    SQL> WITH dat AS
      2          (SELECT 723677 vid,
      3                  243668 fid,
      4                  TO_DATE ('06.03.2013', 'dd.mm.yyyy') mindt,
      5                  TO_DATE ('06.03.2013', 'dd.mm.yyyy') maxdt
      6             FROM DUAL
      7           UNION ALL
      8           SELECT 721850,
      9                  243668,
    10                  TO_DATE ('06.02.2013', 'dd.mm.yyyy'),
    11                  TO_DATE (' 22.03.2013', 'dd.mm.yyyy')
    12             FROM DUAL)
    13      SELECT /*+ GATHER_PLAN_STATISTICS */ DISTINCT vid, fid, mindt - 1 + LEVEL dtshow
    14        FROM dat
    15  CONNECT BY LEVEL <= maxdt - mindt + 1
    16  order by fid, vid, dtshow;
    46 rows selected.
    SQL>
    SQL> SELECT * FROM TABLE (DBMS_XPLAN.display_cursor (NULL, NULL, 'ALLSTATS LAST'));
    PLAN_TABLE_OUTPUT
    SQL_ID  1d2f62uy0521p, child number 0
    WITH dat AS         (SELECT 723677 vid,                 243668 fid,
                TO_DATE ('06.03.2013', 'dd.mm.yyyy') mindt,
    TO_DATE ('06.03.2013', 'dd.mm.yyyy') maxdt            FROM DUAL
    UNION ALL          SELECT 721850,                 243668,
       TO_DATE ('06.02.2013', 'dd.mm.yyyy'),                 TO_DATE ('
    22.03.2013', 'dd.mm.yyyy')            FROM DUAL)     SELECT /*+
    GATHER_PLAN_STATISTICS */ DISTINCT vid, fid, mindt - 1 + LEVEL dtshow
        FROM dat CONNECT BY LEVEL <= maxdt - mindt + 1 order by fid, vid,
    dtshow
    Plan hash value: 2232696677
    | Id  | Operation                              | Name | Starts | E-Rows | A-Rows |   A-Time   |  OMem |  1Mem | Used-Mem |
    |   0 | SELECT STATEMENT                       |      |      1 |        |     46 |00:00:00.01 |       |       |          |
    |   1 |  SORT UNIQUE                           |      |      1 |      2 |     46 |00:00:00.01 |  4096 |  4096 | 4096  (0)|
    |   2 |   CONNECT BY WITHOUT FILTERING (UNIQUE)|      |      1 |        |     90 |00:00:00.01 |       |       |          |
    |   3 |    VIEW                                |      |      1 |      2 |      2 |00:00:00.01 |       |       |          |
    |   4 |     UNION-ALL                          |      |      1 |        |      2 |00:00:00.01 |       |       |          |
    |   5 |      FAST DUAL                         |      |      1 |      1 |      1 |00:00:00.01 |       |       |          |
    |   6 |      FAST DUAL                         |      |      1 |      1 |      1 |00:00:00.01 |       |       |          |
    26 rows selected.What I cannot understand is why the E-Rows is NULL for "CONNECT BY WITHOUT FILTERING (UNIQUE)" step and A-Rows shoots up to 42M for first case. The behaviour is the same for any number of UNION queries above two.
    Can anyone please help me understand this and aid in tuning this accordingly? Also, I would be happy to know if there are better ways to generate the missing date range.
    Regards,
    Satish

    May be, this?
    WITH dat AS
                (SELECT 723677 vid,
                        243668 fid,
                        TO_DATE ('06.03.2013', 'dd.mm.yyyy') mindt,
                        TO_DATE ('06.03.2013', 'dd.mm.yyyy') maxdt
                   FROM DUAL
                 UNION ALL
                 SELECT 721850,
                        243668,
                       TO_DATE ('06.02.2013', 'dd.mm.yyyy'),
                       TO_DATE (' 22.03.2013', 'dd.mm.yyyy')
                  FROM DUAL
                UNION ALL
                SELECT 723738,
                       243668,
                       TO_DATE ('16.03.2013', 'dd.mm.yyyy'),
                       TO_DATE ('  04.04.2013', 'dd.mm.yyyy')
                  FROM DUAL)
           SELECT  vid, fid, mindt - 1 + LEVEL dtshow
             FROM dat
      CONNECT BY LEVEL <= maxdt - mindt + 1
          and prior vid = vid
          and prior fid = fid
          and prior sys_guid() is not null
      order by fid, vid, dtshow;
    66 rows selected.
    Elapsed: 00:00:00.03

  • How to add a default value in a prompt list?

    I have a prompt list that I'm getting from the database, I want to add a deafult value in the top of the list. Ei "ALL", my current list is:
    "AMERICAS"
    "EMEA"
    "ASIA"
    I want a list like:
    "ALL"
    "AMERICAS"
    "EMEA"
    "ASIA"
    This is the code I have:
    @Select(Country Region\Regionname)IN @Prompt('Enter the region','A',{'All'}distinct 'Country Region\Regionname',Multi,Constrained)
    It is displaying only "All". Does someone know how to merge text with a database list in a promp variable?
    Thank you!
    Marcela

    please find this post
    i've solved this problem with someone before
    Optional User prompt
    ok, lets get back to our problem
    since you are in sybase databases i dont know weather there is a DUAL table like oracle or not,
    anyway forget about it and follow those steps
    1. import the universe to the desginer
    2. Right Click any empty space on the Stage to Create a derived table.
    3. Give The derived table any Dummy Name lets say "ALL_table"
    4. write a small SQL statment in the derived table "Enter SQL Expression"
    select 'ALL' from anytable you have in the database.
    lets say the countries table itself
    SELECT 'ALL' FROM USER.COUNTRIES
    validate the SQL and Click ok.
    5.you will have a derived table called "ALL_table" with field name "ALL"
    6.Drag the Field Name ALL to the Same Class whicn you "Country Name" in.
    7.Get back to your "Country Name" Dimension and Double Click it to get its properties, then go to the Properties tab.
    8.in the peroperties tab. "Associate List of Values" ,, Click "Edit" Button.
    9.you will find your "Country Name" Dimension, click "Combine Queies" icon in the bar, to have another queries union with the first one.
    10. you will have another query with "U" beside itm Drag the "ALL" dimension in it, and remove the "Country Name"
    so you will have 2 union queries one with the "Country Name" and another on with "ALL"
    gooooooood.
    11.Click "Save and Close"
    12.Check Export with universe and "Automatically Refresh before use"
    13.now you can hide the "ALL" dimension we have created before, to make it invisible for the users. (do you have problem hiding this dimension?)
    14.export your universe
    15.open WebI
    16.Create Report on this universe.
    17.put the "Country Name" Dimension on the filter and make it prompt,
    18.Run the query,
    19. tell me what you see?
    good luck
    Amr

  • Group by Clause displaying all lookup values

    Hello Friends
    I've a simple table with columns namely Date, Reason, Product and Count and the sample data is displayed below.
    ==========================
    Date Reason Product Count
    ==========================
    06/08/2012 Reason1 Home 1
    07/08/2012 Reason2 Motor 1
    08/08/2012 Reason1 Home 1
    09/08/2012 Reason3 Home 2
    10/08/2012 Reason1 Home 1
    06/08/2012 Reason5 Home 1
    ===========================
    In total I've 5 reason lookup values from Reason1 through to Reason5, but the above table consists of few of them.
    I would like to diplay result per day and take an example of 6th August, I want to display below result, i.e. display all 5 reason looksup and assign zero count if there are no records for that day.
    =====================================
    DATE REASON HOME_COUNT MOTOR_COUNT
    =====================================
    06/08/2012 Reason1 1 0
    06/08/2012 Reason2 0 1
    06/08/2012 Reason3 0 0
    06/08/2012 Reason4 0 0
    06/08/2012 Reason5 1 0
    =====================================
    If we write group by clause, missing reasons like Reason3 and Reason4 will not be displayed in the result set.
    And I've tried to write multiple UNION ALL queries to get the above result which works fine, but if there 100 lookup values, I do not want to write 100 Union queries.
    Please let me know if you have any analytical functions to display the end results?
    Thanks
    Murali.
    Edited by: Muralidhar b on Aug 19, 2012 8:17 PM

    If you followed relational design, you have reason lookup table. If you do not have it you should create one. Also, date is reserved word and count is a keyword, so do not use them as column names. Then use outer join:
    SQL> create table tbl as
      2  select to_date('06/08/2012','dd/mm/yyyy') dt,'Reason1' reason,'Home' product,1 qty from dual union all
      3  select to_date('07/08/2012','dd/mm/yyyy'),'Reason2','Motor',1 from dual union all
      4  select to_date('08/08/2012','dd/mm/yyyy'),'Reason1','Home',1 from dual union all
      5  select to_date('09/08/2012','dd/mm/yyyy'),'Reason3','Home',2 from dual union all
      6  select to_date('10/08/2012','dd/mm/yyyy'),'Reason1','Home',1 from dual union all
      7  select to_date('06/08/2012','dd/mm/yyyy'),'Reason5','Home',1 from dual
      8  /
    Table created.
    SQL> create table reason_list as
      2  select  'Reason' || level reason from dual connect by level <= 5
      3  /
    Table created.
    SQL> select  d.dt,
      2          r.reason,
      3          nvl(
      4              sum(
      5                  case product
      6                    when 'Home' then qty
      7                  end
      8                 ),
      9              0
    10             ) home_qty,
    11          nvl(
    12              sum(
    13                  case product
    14                    when 'Motor' then qty
    15                  end
    16                 ),
    17              0
    18             ) motor_qty
    19    from      (
    20               select  min_dt + level - 1 dt
    21                 from  (
    22                        select  min(dt) min_dt,
    23                                max(dt) max_dt
    24                          from  tbl
    25                       )
    26                 connect by level <= max_dt - min_dt + 1
    27              ) d
    28          cross join
    29              reason_list r
    30          left join
    31              tbl t
    32            on (
    33                    t.dt = d.dt
    34                and
    35                    t.reason = r.reason
    36               )
    37    group by d.dt,
    38             r.reason
    39    order by d.dt,
    40             r.reason
    41  /
    DT        REASON                                           HOME_QTY  MOTOR_QTY
    06-AUG-12 Reason1                                                 1          0
    06-AUG-12 Reason2                                                 0          0
    06-AUG-12 Reason3                                                 0          0
    06-AUG-12 Reason4                                                 0          0
    06-AUG-12 Reason5                                                 1          0
    07-AUG-12 Reason1                                                 0          0
    07-AUG-12 Reason2                                                 0          1
    07-AUG-12 Reason3                                                 0          0
    07-AUG-12 Reason4                                                 0          0
    07-AUG-12 Reason5                                                 0          0
    08-AUG-12 Reason1                                                 1          0
    DT        REASON                                           HOME_QTY  MOTOR_QTY
    08-AUG-12 Reason2                                                 0          0
    08-AUG-12 Reason3                                                 0          0
    08-AUG-12 Reason4                                                 0          0
    08-AUG-12 Reason5                                                 0          0
    09-AUG-12 Reason1                                                 0          0
    09-AUG-12 Reason2                                                 0          0
    09-AUG-12 Reason3                                                 2          0
    09-AUG-12 Reason4                                                 0          0
    09-AUG-12 Reason5                                                 0          0
    10-AUG-12 Reason1                                                 1          0
    10-AUG-12 Reason2                                                 0          0
    DT        REASON                                           HOME_QTY  MOTOR_QTY
    10-AUG-12 Reason3                                                 0          0
    10-AUG-12 Reason4                                                 0          0
    10-AUG-12 Reason5                                                 0          0
    25 rows selected.
    SQL> SY.

  • Performance Problem with view

    We are using a view which comprises of 5 to 6 union queries.Each union query of the view returns large number of rows when we do a normal select without any where clause on that view it takes a long time any clue ???.
    Also our main requirement is to just get very few rows depending upon the where clause which for which we are forming a query over the view but that also takes very long time...????
    Any idea how we ensure that each union query inside the view first takes the where clause passed by the user and then does the union...????
    Or any clue how do we overcome this problem >>>>

    Without seeing the actual queries, it is really difficult to give any specific advice. However, a couple of general points that may help.
    Do you use UNION or UNION ALL in your view? UNION requires a sort to remove duplicate rows from the set of unioned queries. If each of the unioned queries is independent (that is, no two queries will return the same row), you can use UNION all and save a sort.
    If you are using the Cost Based Optimizer and have up to date statistics, and the individual queries in the union view have where clauses, Oracle may be able to only evaluate one of the queries if the WHERE clause in your main query matches the WHERE clause in one of the unioned queries, and the unioned queries are mutually exclusive.
    Finally, can you re-write the view to not use a UNION at all?
    HTH
    John

Maybe you are looking for

  • How do I play iTunes Music Videos on my PC

    I bought a music video on my iPad and want to play it on my Laptop. I can't find anywhere on iTunes on my Laptop where that option comes up. I can search the same music video on the iTunes store on my laptop and it comes up for sale again. I used to

  • Installed a new harddrive in my macbook pro. cannot connect to hp photosmart all in one printer!!

    I, recently, installed a new hard drive on my MacBook Pro Laptop Computer (2007 model). Now, I cannot print out anything on my HP Photosmart  C7180 All-In-One Printer! They don't  seem to be connected, as the printer icon shows up on my computer,  an

  • CS6 Render Lighting

    Render Lighting (and other 3D things) don't work on my laptop. Initially in Preferences Performance, Use Graphics Processor wasn't checked. In that scenario, I didn't get the first message below - just the secind one (not enough memory). I go back to

  • Problem in reading the modified text from text editor

    Hi all, Im using text editor for saving the long text entered in the text editor as standard text in So10 tcode. Here im facing an issue in reading the text from text editor. That is, when the text is entered by the user for first time, then the belo

  • Customized PO report is printing blank after R12 upgrade

    We have upgraded from 11.5.9 to R 12.1.3 .The customized PO report works fine in 11i but prints blank in R12. Kindly help.It is a bit urgent.