Formula :using filter with cross join issue

Hi alll,
Ihave one scenario like calclate the ytd values using cross join like
IIF(is ([Flow].CurrentMember,[YTD]),
(case
when
is ([PERIOD].CurrentMember,[2008.01])
Then (Sum (crossjoin({[DI-3]},CrossJoin({[FLOW].[MtD]},{[PERIOD].[2008.01],[PERIOD].[2008.01] })))/2)
when
is ([PERIOD].CurrentMember,[2008.02])
Then (Sum (crossjoin({[DI-3]},crossjoin({[FLOW].[MtD]},{[PERIOD].[2008.01],[PERIOD].[2008.02]}))))
when
is ([PERIOD].CurrentMember,[2008.03])
Then (Sum (crossjoin({[DI-3]},CrossJoin({[FLOW].[MtD]},{[PERIOD].[2008.01],[PERIOD].[2008.02],[PERIOD].[2008.03]))))
etc,othercase)
but I am trying other oneto decrese the size of formula
IIF(is ([Flow].CurrentMember,[YTD]),
(Sum (crossjoin({[DI-3]},CrossJoin({[FLOW].[MtD]},
{filter([PERIOD].Generations(5).members,StrToNum(Right([PERIOD].CurrentMember.MEMBER_NAME,2)) <= StrToNum(Right([PERIOD].CurrentMember.MEMBER_NAME,2)) AND StrToNum(Left([PERIOD].CurrentMember.MEMBER_NAME,4))=StrToNum(left([PERIOD].CurrentMember.MEMBER_NAME,4)) ) }))))
, othercase )
but its result is same value for all the YTDs for every month, something is going wrong some where
plz any help would be appriociated
Thanks in advance
.

macearl wrote:
SQL View does not display unless data is returned by the query. Is that normal?
Also, none of these options shows the literal result of the expression we built, i.e.:
expression: CAST(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, -24, CURRENT_DATE)) as CHAR)
result: *2008*
Having the ability to test expressions and see their results would be very helpful in debugging. If anyone knows how to do that please share!
Thanks!
MacOk, Probably shoud have figured this out before, but in response to my own question, the way to view the result of an expression is to add the expression as a column and include it in the Table Presentation.
- Mac (he can be taught)

Similar Messages

  • CONNECT BY with CROSS JOIN and WHERE not executing as described in doc

    Hello all,
    please see these two statements. They are the same, but the 1st uses t1 INNER JOIN t2 while the snd uses a CROSS JOIN with WHERE.
    The 2nd statement shows one row more than the first, but the CROSS JOIN with WHERE is the same as the INNER JOIN.
    The result would be OK if Oracle did:
    JOIN -> CONNECT BY PRIOR -> WHERE
    But according to the docs it does:
    JOIN (and WHEREs for JOINS) -> CONNECT BY PRIOR -> Rest of WHERE
    See http://docs.oracle.com/cd/E11882_01/server.112/e26088/queries003.htm#SQLRF52332 for details. There it says:
    Oracle processes hierarchical queries as follows:
    A join, if present, is evaluated first, whether the join is specified in the FROM clause or with WHERE clause predicates.
    The CONNECT BY condition is evaluated.
    Any remaining WHERE clause predicates are evaluated.
    +.....+
    Is this a bug? I'd say yes, because it differs from the docs and it also is not what people are used to ("a,b WHERE" is the same as "a INNER JOIN b").
    Thanks,
    Blama
    --Statement 1:
    WITH t1
    AS
    (SELECT 1 a, 2 b FROM DUAL UNION ALL
    SELECT 2 a, 3 b FROM DUAL UNION ALL
    SELECT 3 a, 4 b FROM DUAL UNION ALL
    SELECT 4 a, 5 b FROM DUAL UNION ALL
    SELECT 5 a, 6 b FROM DUAL),
    t2 AS
    (SELECT 1 c FROM DUAL UNION ALL
    SELECT 2 c FROM DUAL UNION ALL
    SELECT 3 c FROM DUAL UNION ALL
    SELECT 5 c FROM DUAL)
    SELECT DISTINCT t1.a, t2.c, t1.b, level, SYS_CONNECT_BY_PATH(t1.a, '/') Path
    FROM t1 INNER JOIN t2
    ON t1.a = t2.c
    CONNECT BY t1.a = PRIOR t1.b
    START WITH t1.a = 1
    ORDER BY
    1,2,3;
    --Result:
    --1     1     2     1     /1
    --2     2     3     2     /1/2
    --3     3     4     3     /1/2/3
    --Statement 2:
    WITH t1
    AS
    (SELECT 1 a, 2 b FROM DUAL UNION ALL
    SELECT 2 a, 3 b FROM DUAL UNION ALL
    SELECT 3 a, 4 b FROM DUAL UNION ALL
    SELECT 4 a, 5 b FROM DUAL UNION ALL
    SELECT 5 a, 6 b FROM DUAL),
    t2 AS
    (SELECT 1 c FROM DUAL UNION ALL
    SELECT 2 c FROM DUAL UNION ALL
    SELECT 3 c FROM DUAL UNION ALL
    SELECT 5 c FROM DUAL)
    SELECT DISTINCT t1.a, t2.c, t1.b, level, SYS_CONNECT_BY_PATH(t1.a, '/') Path
    FROM t1 CROSS JOIN t2
    WHERE t1.a = t2.c
    CONNECT BY t1.a = PRIOR t1.b
    START WITH t1.a = 1
    ORDER BY
    1,2,3;
    --Result:
    --1     1     2     1     /1
    --2     2     3     2     /1/2
    --3     3     4     3     /1/2/3
    --5     5     6     5     /1/2/3/4/5My details:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE     11.2.0.2.0     Production
    TNS for Solaris: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production

    blama wrote:
    Hello Paul,
    that means that "a,b" isn't the same as "a CROSS JOIN b".
    I don't think that that is really the case.
    Do you have docs on this one?No explicit docs just (my) logic - having said that, I suppose it is implied that if you are doing ANSI style joins, it's not the where clauses that
    are specifying the join.
    If you do t1,t2 where t1.a=t2.a then Oracle figures out the kind of join from the (relevant) where clauses and treats the other where clauses after the CONNECT BY.
    If you do t1 cross join t2 where t1.a=t2.a then you are saying the join is completely specified by the CROSS JOIN - i.e it's Cartesian. Oracle doesn't look at the where clauses for this. Therefore
    all where clauses are treated as 'other' and are evaluated after the CONNECT BY.
    So, in my mind it's 10g that has the bug.

  • Error using Filter with SQL Expression

    Hey all -
    New to Oracle BI, and getting a problem with Filters that use SQL Expressions.
    The column I'm filtering on is a 4 digit year, expressed as a VARCHAR2(4 byte) in the physical database. My SQL Expression in the filter is:
    Column: CAL YEAR 4 DIGIT
    Operator: Is equal to/in
    SQL Expression: TO_CHAR(ADD_MONTHS(SYSDATE, -24), 'YYYY'))
    when I click on the "Results" Tab I get the following error message:
    Error Codes: YQCO4T56:OPR4ONWY:U9IM8TAC:OI2DL65P
    Odbc driver returned an error (SQLExecDirectW).
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 27002] Near <(>: Syntax error [nQSError: 26012] . (HY000)
    I've isolated the issue to the expression above. If I put in a literal value and supply a four digit year like below it works:
    Column: CAL YEAR 4 DIGIT
    Operator: Is equal to/in
    SQL Expression: *2008*
    Any ideas on what's causing my problem?
    Thanks!
    Mac

    macearl wrote:
    SQL View does not display unless data is returned by the query. Is that normal?
    Also, none of these options shows the literal result of the expression we built, i.e.:
    expression: CAST(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, -24, CURRENT_DATE)) as CHAR)
    result: *2008*
    Having the ability to test expressions and see their results would be very helpful in debugging. If anyone knows how to do that please share!
    Thanks!
    MacOk, Probably shoud have figured this out before, but in response to my own question, the way to view the result of an expression is to add the expression as a column and include it in the Table Presentation.
    - Mac (he can be taught)

  • Update statement with inner join issues

    I have searched for the answer on this and not really 100%....so figured I would ask...be nice :)
    what have I done wrong? Or am I just going about this the wrong way? I have looked at the oracle docs and I can't find an example showing me this. I do see where you SET values based on the select query results. I want to update the result of a query based on the join with static values....
    UPDATE table.a
    SET table.a_STATUS=9,table.a.INDEX = 'N'
    WHERE (SELECT table.a INNER JOIN table.b ON (table.a.COMPANY = table.b.COMPANY) AND (table.a.PO_NUMBER =table.b.PO_NUMBER) AND (table.a.PO_RELEASE =table.b.PO_RELEASE) AND (table.a.PO_CODE =table.b.PO_CODE) AND (table.a_STATUS=1) AND (table.b.CLOSED_FL = 'Y'));

    Hi,
    Welcome to the forum!
    user11360811 wrote:
    I have searched for the answer on this and not really 100%....so figured I would ask...be nice :)
    what have I done wrong? Or am I just going about this the wrong way? I have looked at the oracle docs and I can't find an example showing me this. I do see where you SET values based on the select query results. I want to update the result of a query based on the join with static values....
    UPDATE table.aThat's updating a table called A in a schema called TABLE (which is not a good name for any user-named object). Are those really your table and schema names? Perhaps you meant to have an underscore instead of a dot:
    UPDATE  table_ais much, much more reasonable. It means the table name is TABLE_A (a perfectly good name) in the current schema.
    SET table.a_STATUS=9,table.a.INDEX = 'N'
    WHERE ( ...There's a syntax error. You can't just say
    "WHERE (sub-query)"; it has to be
    "WHERE EXISTS (sub-suery)" or
    "WHERE (sub-query) = some_value" or
    "WHERE some_value IN (sub_query)", or something similar. WHERE can never be used without some kind of comparison operator, such as EXISTS, = or IN.
    SELECT table.a INNER JOIN table.b ON ...Here are some more syntax errors. The correct syntax for any query is
    SELECT  column_list
    FROM    table_name ...If table.a is your (first) table name, then you're missing the list of columns to SELECT, and the mandatory keyword FROM.
    (table.a.COMPANY = table.b.COMPANY) AND (table.a.PO_NUMBER =table.b.PO_NUMBER) AND (table.a.PO_RELEASE =table.b.PO_RELEASE) AND (table.a.PO_CODE =table.b.PO_CODE) AND (table.a_STATUS=1) AND (table.b.CLOSED_FL = 'Y'));Some general advice about UPDATE:
    If it's not obvious how to use UPDATE to do what you want, then there's a good chance that UPDATE is the wrong tool for the job. MERGE might be much simpler, and more efficient as well. This is especially likely if you need to join the table that's being updated to some other table.
    Whenever you have a problem, please post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) from all tables involved. That way, the people who want to help you can re-create the problem and test their ideas.
    Also post the results you want from that data, and an explanation of how you get those results from that data, with specific examples.
    Simplify the problem as much as possible. Remove all tables and columns that play no role in this problem.
    If you're asking about a DML statement, such as UPDATE, the CREATE TABLE and INSERT statements should re-create the tables as they are before the DML, and the results will be the contents of the changed table(s) when everything is finished.
    Always say which version of Oracle you're using (for example, 11.2.0.2.0).
    See the forum FAQ {message:id=9360002}
    Edited by: Frank Kulash on Jan 17, 2013 4:58 PM

  • Using Scope With Cross Entity Reasoning

    I have been looking through the functions examples for scope for relationships for an entity. Can scope functions be used on self-referencing relationship.
    For example I have one entity the applicant and in addition the containment relationship the applicants I create a self-referencing relationship the applicants tax filer. Can I use a scope function on the relationship applicants tax filer?
    Thanks

    941611 wrote:
    I have been looking through the functions examples for scope for relationships for an entity. Can scope functions be used on self-referencing relationship.
    For example I have one entity the applicant and in addition the containment relationship the applicants I create a self-referencing relationship the applicants tax filer. Can I use a scope function on the relationship applicants tax filer?
    ThanksScope is very useful for self referencing relationships. Its necessary when you need to use a self referencing relationship in a rule.
    For example.
    Imagine a school based rulebase with an entity "the child" with a reference to "the child's classmates" (source and target = "the child")
    The natural language form works as as long as you use an Alias (scoping the target child as "the other child")
    The child is top of the class if
       for all of the child's classmates (the other child)
          the child's test score > the other child's test scoreThe functional form uses the ForAllScope instead of ForAll
    The child is top of the class if
       ForAllScope(the child's classmates, the other child)
          the child's test score > the other child's test score

  • What is the use of Cartesian Product or Cross join?

    Dear friends...
        I have done with inner join, self join and outer join. But I m getting confused with cross join. I know it used to produce Cartesian product of two table. But I wanted to know what is the use of Cartesian product in real life? In
    which situation we can use Cartesian product or cross join? I wanted some real life examples on Cartesian product. Please help me.

    Sometimes you get requirement stating that all combinations should be considered and in this scenario CROSS JOIN comes in play.
    If you have Products and Stores table, by using CROSS JOIN you can get the combination of all stores and all products and then you can JOIN this result set to other tables.
    Please refer:  The power of the Cross Join
    Cheers,
    Vaibhav Chaudhari
    [MCTS],
    [MCP]

  • Cross join

    Can some one plz explain in wat scenarios cross join is useful?

    It's not easy to come up with a generic scenario / use case.
    I assume you know what it is / what the effects are so there's no point showing that.
    The cases where I have used it are a) rare and b) very specific - i.e. not good for showing why you might want to use it.
    Chances are you might never need to use it.
    CROSS JOIN syntax is good when you clearly want a cartesian product and by using this syntax you effectively document that this behaviour is intentional.

  • How to filter with multiple selection on a single column on external list, currently only one filter per column is available.

    I have external list where i want to apply multiple filter for every column like we do in Excel spreadsheet - we can filter a spreadsheet column by selecting multiple checkbox for every  column. I am using Sharepoint 2010
    Is this possible in sharepoint 2010? Any idea how to acheive that?
    Thanks in advance.

    Hi Rahul,
    According to your description, my understanding is that you want to use filter with multiple values on a column of an external list in SharePoint 2010.
    Per my knowledge, there is not an OOB way to achieve it. As a workaround, you can custom the web part to implement it. There is an articles for your reference:
    http://blogs.telerik.com/aspnet-ajax/posts/13-11-05/add-excel-like-multi-select-filtering-to-your-asp.net-datagrid
    In addition, you can use a third party solution to achieve it, please take a look at:
    http://abilitics.com/Blog/index.php/sharepoint-improved-grids-with-excel-like-inline-editing/
    http://social.technet.microsoft.com/forums/sharepoint/en-US/3d19b9d3-d394-4af9-9e8e-2dee70b50540/filter-column-with-multiple-filter-values-in-sharepoint-list
    I hope this helps.
    Thanks,
    Wendy
    Wendy Li
    TechNet Community Support

  • Non equijoin and cross join

    I tried learning about nonequi join and cross join.
    When I try non equi join "select * from emp,dept;"...I am getting total of 60 rows.
    when I try cross join "select * from emp cross join dept"...I am getting same count(60 rows) and same output.
    Can anypone please give me the exact difference between the above joins.
    Which cases they are used.
    Thanks

    Hi,
    user11048416 wrote:
    I tried learning about nonequi join and cross join.
    When I try non equi join "select * from emp,dept;"...I am getting total of 60 rows.
    when I try cross join "select * from emp cross join dept"...I am getting same count(60 rows) and same output.
    Can anypone please give me the exact difference between the above joins.Those two are exactly the same. The first one is Oracle's older notation, the other second (using the keywords CROSS JOIN) is ANSI syntax, which Oracle started supporting in version 9.
    Which cases they are used.By far, the most common occurrence of cross joins is when someone forgets to add join conditions in the older syntax. That's one reason why ANSI syntax is better.
    There are real uses, but they are not very common, and getting rarer.
    If one of the tables (usually a result set, not a full table) has only one row, it's a way to add the columns of that "table" to another result set.
    Cross-joins are also used for partitioned outer joins (where you want one row for each combination of attributes, whether or not it actually occurs in the data) and unpivots displaying several columns from the same row as if they were one column on several rows). In Oracle 11, there are cleaner ways for doing both of these.

  • Issue with recursive join and filter records

    I am having an issue with recursive join and filtering records for the following rules. The table, sample records, test script and rules are as below
    drop table PC_COVKEY_PD;
    create table PC_COVKEY_PD (
    PC_COVKEY varchar(50),
    COVERAGE_NUMBER varchar(3),
    SEQUENCE_ALPHA  varchar(3),
    TRANSACTION_TYPE varchar(3),
    COV_CHG_EFF_DATE date,
    TIMESTAMP_ENTERED timestamp
    delete from PC_COVKEY_PD;
    commit;
    Insert into PC_COVKEY_PD values ('10020335P8017MT0010012','001','001','02',to_date('01/FEB/2010','DD/MON/RRRR'),to_timestamp('02/JAN/2010 01:55:59.990216 AM','DD/MON/RRRR HH12:MI:SS.FF6 AM'));
    Insert into PC_COVKEY_PD values ('10020335P8017MT0050012','005','001','02',to_date('01/FEB/2010','DD/MON/RRRR'),to_timestamp('02/JAN/2010 01:56:00.268099 AM','DD/MON/RRRR HH12:MI:SS.FF6 AM'));
    Insert into PC_COVKEY_PD values ('10020335P8017MT0010032','001','003','03',to_date('14/JAN/2011','DD/MON/RRRR'),to_timestamp('14/JAN/2011 04:25:19.018217 PM','DD/MON/RRRR HH12:MI:SS.FF6 AM'));
    Insert into PC_COVKEY_PD values ('10020335P8017MT0010042','001','004','03',to_date('21/JAN/2011','DD/MON/RRRR'),to_timestamp('21/JAN/2011 04:00:31.719444 PM','DD/MON/RRRR HH12:MI:SS.FF6 AM'));
    Insert into PC_COVKEY_PD values ('10020335P8017MT0050022','005','002','03',to_date('21/JAN/2011','DD/MON/RRRR'),to_timestamp('21/JAN/2011 04:02:48.953594 PM','DD/MON/RRRR HH12:MI:SS.FF6 AM'));
    commit;
    --select * from PC_COVKEY_PD order by COV_CHG_EFF_DATE,TIMESTAMP_ENTERED;
    PC_COVKEY          COVERAGE_NUMBER     SEQUENCE_ALPHA     TRANSACTION_TYPE     COV_CHG_EFF_DATE     TIMESTAMP_ENTERED
    10020335P8017MT0010012          001     001                  02                          01/FEB/2010            02/JAN/2010 01:55:59.990216 AM
    10020335P8017MT0050012          005     001                  02                      01/FEB/2010            02/JAN/2010 01:56:00.268099 AM
    10020335P8017MT0010032          001     003                  03                      14/JAN/2011            14/JAN/2011 04:25:19.018217 PM
    10020335P8017MT0010042          001     004                  03                      21/JAN/2011            21/JAN/2011 04:00:31.719444 PM
    10020335P8017MT0050022          005     002                  03                      21/JAN/2011             21/JAN/2011 04:02:48.953594 PM
    */Rule;
    Every PC_COVKEY, query should recursively join and generate set of records depending on latest SEQUENCE_ALPHA for the coverage number at that point of time. For ex,
    for 10020335P8017MT0010042 (4 row) should generate 2 records
    1. 10020335P8017MT0010042001004 (PC_COVKEY || COVERAGE_NUMBER || latest SEQUENCE_ALPHA--004 for cover 001), SEQUENCE_ALPHA 001 for cover 001 is not the latest for 10020335P8017MT0010042.
    2. 10020335P8017MT0010042005001 (coverage number 005, and latest sequence alpha-001 for cover 005).
    SEQUENCE_ALPHA 002 for cover 005 is not the latest for 10020335P8017MT0010042 as it happened later stage.
    for 10020335P8017MT0050022 (5 row) should generate 2 records as
    1. 10020335P8017MT0050022001004 (PC_COVKEY || COVERAGE_NUMBER || latest SEQUENCE_ALPHA--004 for cover 001),
    2. 10020335P8017MT0010042005002 (coverage number 005, and latest sequence alpha-002 for cover 005)
    WITH SNAPSHOT_CVR_CTP as (
    SELECT pcd1.PC_COVKEY,
           pcd1.PC_COVKEY||pcd2.COVERAGE_NUMBER||pcd2.SEQUENCE_ALPHA as cov_key,
           pcd2.COVERAGE_NUMBER,
           pcd2.SEQUENCE_ALPHA,
           pcd2.COVERAGE_NUMBER||pcd2.SEQUENCE_ALPHA as CVRSEQ,
           max(pcd2.COVERAGE_NUMBER||pcd2.SEQUENCE_ALPHA) over (partition by pcd1.PC_COVKEY, pcd1.COVERAGE_NUMBER
           order by pcd2.COV_CHG_EFF_DATE, pcd2.TIMESTAMP_ENTERED) as MaxSeq,
           pcd2.COV_CHG_EFF_DATE,     
           pcd2.TIMESTAMP_ENTERED
    FROM
    PC_COVKEY_PD pcd1,
    PC_COVKEY_PD pcd2
    select * from SNAPSHOT_CVR_CTP SC
    WHERE sc.PC_COVKEY = '10020335P8017MT0010042'  -- 4 row
    --AND  COVERAGE_NUMBER||SC.MAXSEQ = COVERAGE_NUMBER||SEQUENCE_ALPHA
    ORDER BY TIMESTAMP_ENTERED
    PC_COVKEY     COV_KEY     COVERAGE_NUMBER     SEQUENCE_ALPHA     CVRSEQ          MAXSEQ     COV_CHG_EFF_DATE     TIMESTAMP_ENTERED
    10020335P8017MT0010042     10020335P8017MT0010042001001     001     001     001001     001001     01/FEB/2010     02/JAN/2010 01:55:59.990216 AM
    10020335P8017MT0010042     10020335P8017MT0010042005001     005     001     005001     005001     01/FEB/2010     02/JAN/2010 01:56:00.268099 AM
    10020335P8017MT0010042     10020335P8017MT0010042001003     001     003     001003     005001     14/JAN/2011     14/JAN/2011 04:25:19.018217 PM
    10020335P8017MT0010042     10020335P8017MT0010042001004     001     004     001004     005001     21/JAN/2011     21/JAN/2011 04:00:31.719444 PM
    10020335P8017MT0010042     10020335P8017MT0010042005002     005     002     005002     005002     21/JAN/2011     21/JAN/2011 04:02:48.953594 PM
    I am trying to filter row using MAXSEQ but at the moment MAXSEQ values are not coming as expected. I expect following value for COV_KEY combination
    COV_KEY                                         MAXSEQ
    10020335P8017MT0010042001001     001004
    10020335P8017MT0010042005001     005001 -- match
    10020335P8017MT0010042001003     001004
    10020335P8017MT0010042001004     001004 -- match
    10020335P8017MT0010042005002     005001Would appreciate if anyone can get MAxSEQ as expected.

    Something like..
    with dist_cov_numbers as
      select distinct coverage_number cov_number
      from PC_COVKEY_PD
    all_data as
      select pcd.*,d.cov_number new_coverage_number,
             max(decode(coverage_number,d.cov_number,sequence_alpha))
                  over( partition by d.cov_number
                        order by COV_CHG_EFF_DATE,TIMESTAMP_ENTERED
                                  ) max_seq
      from PC_COVKEY_PD pcd,dist_cov_numbers d
    select pc_covkey,pc_covkey||new_coverage_number||max_seq new_key,
           pc_covkey||coverage_number||sequence_alpha actual_key
    from all_data
    order by COV_CHG_EFF_DATE, TIMESTAMP_ENTERED;
    PC_COVKEY                   NEW_KEY                           ACTUAL_KEY                     
    10020335P8017MT0010012      10020335P8017MT0010012001001      10020335P8017MT0010012001001     
    10020335P8017MT0010012      10020335P8017MT0010012005         10020335P8017MT0010012001001     
    10020335P8017MT0050012      10020335P8017MT0050012001001      10020335P8017MT0050012005001     
    10020335P8017MT0050012      10020335P8017MT0050012005001      10020335P8017MT0050012005001     
    10020335P8017MT0010032      10020335P8017MT0010032001003      10020335P8017MT0010032001003     
    10020335P8017MT0010032      10020335P8017MT0010032005001      10020335P8017MT0010032001003     
    10020335P8017MT0010042      10020335P8017MT0010042005001      10020335P8017MT0010042001004     
    10020335P8017MT0010042      10020335P8017MT0010042001004      10020335P8017MT0010042001004     
    10020335P8017MT0050022      10020335P8017MT0050022005002      10020335P8017MT0050022005002     
    10020335P8017MT0050022      10020335P8017MT0050022001004      10020335P8017MT0050022005002 
    10 rows selected Edited by: jeneesh on Nov 22, 2012 10:54 AM

  • Can cross join be used with other joins

    hi,
    Q1) is this syntactically correct , cross join with other joins like inner outer. like following.
    select * from t1 cross join t2
    inner join t3 on cast(t3.c1 as varchar) =  (cast(t1.id as varchar) +  cast(t2.t2 as varchar))
    I have seen it works but wanted to know is it syntactically correct.
    yours sincerely

    Hi
    First, Sorry, I wanted to VOTE (as I wrote) and not to Propose as answer :-)
    Join are not necessarily executing in the order we write them. I can show simple example with tables that include the amount of rows is very different.
    /**************************************************** DDL - Create tables */
    CREATE TABLE T1 (
    ID INT IDENTITY CONSTRAINT PK_T1 PRIMARY KEY,
    MyValue UNIQUEIDENTIFIER DEFAULT NEWID()
    CREATE TABLE T2 (
    ID INT IDENTITY CONSTRAINT PK_T2 PRIMARY KEY,
    MyValue UNIQUEIDENTIFIER DEFAULT NEWID()
    CREATE TABLE T3 (
    ID INT IDENTITY CONSTRAINT PK_T3 PRIMARY KEY,
    MyValue UNIQUEIDENTIFIER DEFAULT NEWID()
    GO
    /**************************************************** DML - Populate Tables*/
    SET NOCOUNT ON;
    insert T1 (MyValue)
    select top 100 null
    from _ArielyAccessoriesDB.dbo.ArielyNumbers
    GO
    insert T2 (MyValue)
    select top 500 null
    from _ArielyAccessoriesDB.dbo.ArielyNumbers
    GO
    insert T3 (MyValue)
    select top 10000 null
    from _ArielyAccessoriesDB.dbo.ArielyNumbers
    GO
    /**************************************************** Play Time */
    select T1.MyValue, T2.MyValue, T3.MyValue
    from T3
    join T2 on T2.ID = T3.ID
    join T1 on T1.ID = T2.ID
    GO
    -- Check Execution Plan [EP]
    -- Notice that SQL Server has changed the join order from T3-T2-T1 to T1-T2-T3 because it’s better that way.
    -- You can notice that the order was by the number of rowns in tables from the smallest to the bigest SET
     hope this is helpful :-)
    [Personal Site] [Blog] [Facebook]

  • Using Command to fix null / left outer join issue

    Hi
    I was told awhile ago that it's possible to fix crystal's issue with left outer join and null records being eliminated.
    I think i remember most of how this goes, but i can't seem to duplicate it.
    1) You can't have any select expert -- record
    2) You create the report normally and then make a new report using the SQL Query
         - Can't remember if its the whole report or upto the tables that have hisotry (null results)
    3) You move parts from WHERE to FROM
    Hopefully someone can help correct the steps i'm doing wrong or add what i'm missing from this.
    Below is the Query from my comlpeted report, but when i run it with the last LEFT OUTER JOIN added it removes all the products with no sales during that year.
    Any help would be greatly appreciated even if it's to say this can't be done.
    SELECT
    "prod_warehouse"."pw_whs_id",
    "prod_warehouse"."pw_prodline_id",
    "prod_warehouse"."pw_prod_id",
    "prod_warehouse"."pw_bin_location1",
    "prod_warehouse"."pw_min_onhand_qty",
    "prod_warehouse"."pw_max_onhand_qty",
    "prod_warehouse"."pw_onhand_qty",
    "product_lookup"."prlkp_lang1_1_desc",
    "prod_customer"."prcu_cust_part_num",
    "contract_details"."cond_level1_amt",
    "sales_history"."sah_year"
    FROM   (((("sisl_data05"."dbo"."products" "products"
    LEFT OUTER  JOIN "sisl_data05"."dbo"."prod_warehouse" "prod_warehouse"
    ON ("products"."pr_prod_id"="prod_warehouse"."pw_prod_id")
    AND ("products"."pr_prodline_id"="prod_warehouse"."pw_prodline_id"))
    LEFT OUTER JOIN "sisl_data05"."dbo"."product_lookup" "product_lookup"
    ON ("products"."pr_prod_id"="product_lookup"."prlkp_prod_id")
    AND ("products"."pr_prodline_id"="product_lookup"."prlkp_prodline_id"))
    LEFT OUTER JOIN "sisl_data05"."dbo"."prod_customer" "prod_customer"
    ON ("products"."pr_prod_id"="prod_customer"."prcu_prod_id")
    AND ("products"."pr_prodline_id"="prod_customer"."prcu_prodline_id"))
    LEFT OUTER JOIN "sisl_data05"."dbo"."contract_details" "contract_details"
    ON "prod_warehouse"."pw_prod_id"="contract_details"."cond_prod_id")
    LEFT OUTER JOIN "sisl_data05"."dbo"."sales_history" "sales_history"
    ON (("prod_warehouse"."pw_whs_id"="sales_history"."sah_sortkey1")
    AND ("prod_warehouse"."pw_prod_id"="sales_history"."sah_sortkey2"))
    AND ("prod_warehouse"."pw_prodline_id"="sales_history"."sah_sortkey3")
    WHERE
    "prod_warehouse"."pw_whs_id"='20123'
    AND ("prod_warehouse"."pw_onhand_qty"<>0
    OR "prod_warehouse"."pw_bin_location1"<>'  '
    OR "prod_warehouse"."pw_max_onhand_qty">0)
    AND "sales_history"."sah_year"=2014
    ORDER BY "prod_warehouse"."pw_bin_location1", "prod_warehouse"."pw_prod_id"

    Try this:
    SELECT
    prod_warehouse.pw_whs_id,
    prod_warehouse.pw_prodline_id,
    prod_warehouse.pw_prod_id,
    prod_warehouse.pw_bin_location1,
    prod_warehouse.pw_min_onhand_qty,
    prod_warehouse.pw_max_onhand_qty,
    prod_warehouse.pw_onhand_qty,
    product_lookup.prlkp_lang1_1_desc,
    prod_customer.prcu_cust_part_num,
    contract_details.cond_level1_amt,
    sales_history.sah_year
    FROM sisl_data05.dbo.products products
      LEFT OUTER  JOIN sisl_data05.dbo.prod_warehouse prod_warehouse
        ON products.pr_prod_id=prod_warehouse.pw_prod_id
        AND products.pr_prodline_id=prod_warehouse.pw_prodline_id
      LEFT OUTER JOIN sisl_data05.dbo.product_lookup product_lookup
        ON products.pr_prod_id=product_lookup.prlkp_prod_id)
        AND products.pr_prodline_id=product_lookup.prlkp_prodline_id
      LEFT OUTER JOIN sisl_data05.dbo.prod_customer prod_customer
        ON products.pr_prod_id=prod_customer.prcu_prod_id
        AND products.pr_prodline_id=prod_customer.prcu_prodline_id
      LEFT OUTER JOIN sisl_data05.dbo.contract_details contract_details
        ON prod_warehouse.pw_prod_id=contract_details.cond_prod_id
      LEFT OUTER JOIN sisl_data05.dbo.sales_history sales_history
        ON prod_warehouse.pw_whs_id=sales_history.sah_sortkey1
        AND prod_warehouse.pw_prod_id=sales_history.sah_sortkey2
        AND prod_warehouse.pw_prodline_id=sales_history.sah_sortkey3
        AND sales_history.sah_year = 2014
    WHERE prod_warehouse.pw_whs_id='20123'
      AND (prod_warehouse.pw_onhand_qty<>0
        OR prod_warehouse.pw_bin_location1<>'  '
        OR prod_warehouse.pw_max_onhand_qty>0)
    Take a look at what I've done with the last line of the last join.  The issue is that when you left join to a table and you use that table in the Where clause, you've basically turned your you left outer join into an inner join because the record has to be there in order to get the value in the filter.  By moving the filter into the join, you'll still get the rest of the data when there is no corresponding record.
    NOTE:  Crystal adds all sorts of "extra" stuff like quotes and parentheses that you don't need and which I have removed to make the query easier to read.
    -Dell

  • Cross Join in SAP MDX using Web I

    Hi there,
      I am facing an issue. I am currently using BO universe on the top of BW infocube. Now whenever i am dragging two dimensions from the universe in my web i report it is creating cross join , however whenever i add any key figures , it changes the cross join to Non Empty Cross Join.
    Now while testing the mdx query in MDXTEST i found that while running the MDX query with two dimensions only is giving me a cross join in MDXTEST also, however if i modify the cross join to non empty cross join it gives me the correct data.
    Is it possible to do something in BO or SAP side so that my query starts creating non empty cross join rather then mere cross join.
    Is it something to do with the transports we run before installing SAP integration kit
    Thanks for your support

    Thanks for your input Ingo. I am however creating a report in web intelligence using infocube as the base. Connected via integration kit and a universe. The universe is on the top of the infocube.
    So when i create a web i report with two dimensions it is simply doing cross join however when we add a key figure it gives the correct data.  The data which comes out of a report with two dimensions only is different then the data coming out of a bex query using the infocube as the base simply because the web i report is creating cross join (in database terminology) whereas the bex query is joining the two dimensions via the fact table to give us relevant data ( e.g. customers for a particular material)
    Now when we analyzed the query coming out web i, we found out that instead of "crossjoin" if it uses "Non Empty Crossjoin" it solves the purpose.
    Coming to the point the query getting generated from web i is incorrect. I was hoping to get some kind of fix if available from the forum else ask the SAP support people to provide with a hotfix or something
    Thanks

  • ORA-32034: unsupported use of WITH clause-issue

    hello all,
    i am facing some issue when i use with clause and union all operator.
    i have created a dummy code to solve this problem..
    my code is ----------
    with dept_1 as
    (select deptno d1 from detp9 where deptno = 20)
    select empno from emp9 e,dept_d1 where e.empno = dept_1.d1
    UNION ALL
    with dept_1 as
    (select deptno d2 from detp9 where deptno = 30)
    select empno from emp9 e,dept_d2 where e.empno = dept_2.d2.
    when i ran this i gort a message-
    ORA-32034: unsupported use of WITH clause.
    please help me to solve this iisue..
    when i ran it separatly without using union/union all it ran sucessfully..
    thanks in advance..

    923315 wrote:
    hello all,
    i am facing some issue when i use with clause and union all operator.
    i have created a dummy code to solve this problem..
    my code is ----------
    with dept_1 as
    (select deptno d1 from detp9 where deptno = 20)
    select empno from emp9 e,dept_d1 where e.empno = dept_1.d1
    UNION ALL
    with dept_1 as
    (select deptno d2 from detp9 where deptno = 30)
    select empno from emp9 e,dept_d2 where e.empno = dept_2.d2.
    when i ran this i gort a message-
    ORA-32034: unsupported use of WITH clause.
    please help me to solve this iisue..
    when i ran it separatly without using union/union all it ran sucessfully..
    thanks in advance..Well, i don't see anything about these queries that makes sense.
    You are essentially joining emp and dept on EMPNO to DEPTNO ... that doesn't usually make any sense.
    How about you step back from the query which is almost certainly incorrect, and explain your tables, their data and what you need as output?
    Cheers,

  • Issue with Cross-Company code transactions and Extended Withholding tax

    Hi Gurus,
    I am having an issue with Cross-company code transaction while posting expense with 2 different company codes.
    In the 2 company codes, one company code is setup for Withholding tax and other was not set.
    While posting in FB50, I am getting the below message and system does not allow to post the invoice.
    Company codes have different settings for withholding tax treatment
    Message no. F5786
    Diagnosis
    You are entering a document containing at least one vendor or customer item and which has line items in several company codes. The extended withholding tax treatment has been set to active in one of these company codes, but not in one of the other company codes.
    System Response
    You cannot enter this kind of document.
    Procedure
    Enter the transaction in two documents.
    For this I tried to test the transaction by activating of extended Withholding tax for both the company codes. Then the invoice is posting correctly now.
    The point is if I activate extended withholding tax for the Company code which is not using the setup, will it face any issues in other areas? and also kindly advice whether is this a right way to set up to fix the current problem.
    Thanks for the Support and early response will be appreciated.
    JBC.

    Hi Mamta,
    Thanks for the Response. I think you misunderstood my scenario.
    For Eg in FB60 with Co code 5065:
    I am debiting the Expenses for Co Code 1000(Witholding tax not active) and crediting the Bank Account of Co Code 5065(Withholding tax setup is done for this co code). When I tried to post with these line items I have getting the error.
    Posting        GL                   Co Code
    Dr          106520(Exp)            1000
    Cr          202020(Bank)           5065
    For this I tried by activating the Withholding tax for Co code 1000 which is not active before and post it. The system allows me to post the invoice.
    I want to know whether is this a right way to solve this issue and will it impact on any other areas by only activating the Withholding tax for a Co code?
    Thanks,
    Bapu

Maybe you are looking for

  • Save Frame As via Scripting

    I want a script to automatically save the current frame in a few different formats to a particular location. The most important formats would be a photoshop file with layers from the comp, and a flat jpeg file. In the Composition Menu, the Save Frame

  • Au crashes on launch (Mac CS6)

    Au CS5.5 (4.0x1815) works fine. Au CS6 was working before I upgraded to Lion, with 10.6.8 Any ideas how to fix?  I trashed Prefs.  Maybe I should un/reinstall. Partial crash log: Process:         Adobe Audition CS6 [6773] Path:            /Applicatio

  • Increasing Screen Size in Windows 7 and PS CS6

    I have just updated my operating system to Windows 7.  When I open Photoshop CS6 the screen and icons look small.  Is there a way to enlarge the screen icons?

  • Opening New window loses userPrincipal

    Hi, I am facing the below issue. In one portlet I am have various links to jsp's which opens up in a new window using window.open() script. I need to take the logged in user's id to work on the opened screen. But unfartunately, i'm not always getting

  • Weird cycle of email refreshes when swipe deleting many emails during a sync

    (Posting here instead of in ActiveSync forum, as this seems to have more Pre traffic) In the Pre email application, I open up an email folder (not my Inbox, but a folder I've marked as a favorite) that gets about a hundred new messages per day. As so