Dimensions with multiple joins

Hi,
Discoverer Desktop 9.0.2
Discoverer Administrator 9.0.2
OWB 9.2
I have imported the dimensions and facts from OWB EEX file.
While I trying to create a report based on the dimensions, I found the problem in Dimensions used multiple times against the fact table.
For example,
I use the Time Dimension (TIME_DIM) for assigned date, open Date and Close dt. My fact table will have the foreign keys for these 3 columns.
TIME_DIM
DAY_ID
DAY_DAY
DAY_MONTH
DAY_YEAR
data
DAY_ID DAY_DAY DAY_MONTH DAY_YEAR
1 01-JAN-04 JANUARY 2004
2 01-FEB-04 FEBRUARY 2004
3 01-MAR-04 MARCH 2004
FACT_TABLE
DAY_ID
DAY_ID2
DAY_ID3
Data
DAY_ID DAY_ID2 DAY_ID3
1 2 3
1 1 2
While I am creating the report, in 'work book wizard: step 2' shows the TIME_DIM only one time, also it allows to select only one time with any one of these keys. Whereas I need to select the time dimension for each of the time keys in fact table.
Is their any work around to get these values in my reports?
I mean
My report will look like,
ASSIGNED DT OPEN DT CLOSE DT
01-JAN-04 01-FEB-04 01-MAR-04
01-JAN-04 01-JAN-04 01-FEB-04
I tried with creating hierarchies, modifying the SQL to add these keys manually and then import SQL, doesnt work at all.
Please help me !!
Thanks,
Shree

You have to load the table up several times into the EUL and create links to the different column in your fact table.

Similar Messages

  • SSM7.5 - Dimension with Multiple Hierarchies

    Hi all,
    I'm facing here one problem in the SSM front-end when I'm trying to use one the possibilities that PAS database offers, in this case the use of a dimension with multiple hierarchies.
    As you can see in this image, the dimension is created in PAS and works without problems in the dataview.
    Hierarchy one:
    [http://img121.imageshack.us/img121/334/pas1y.jpg]
    Hierarchy two:
    [http://img831.imageshack.us/img831/2586/pas2.jpg]
    In the SSM front-end, when I try to use that dimension, by default appears the first hierarchy:
    [http://img826.imageshack.us/img826/4043/hier3.jpg]
    In the dimensional selector the dimension appears fine for the first hierarchy:
    [http://img30.imageshack.us/img30/3103/hier1.jpg]
    But when I select the second hierarchy...
    [http://img34.imageshack.us/img34/1722/hier2.jpg]
    The Internet Explorer crashes and close all the open windows. This happens in the scorecard and also in the reports.
    Is not possible to use dimensions with multiple hierarchies in SSM? Did anyone had this problem before?
    Thanks in advance
    Pedro
    Edited by: Pedro S. Costa on Sep 13, 2010 11:03 AM

    Hi Shashi,
    first of all, thanks for your answer.
    But I don't understand when you say that "we cannot have two hierarchies on the same dimensions"?!?!?
    I already have some years of experience with PAS database and it's not the first time I create a dimension with more than one hierarchy. I use also that in a productive system (before this SSM front-end) without problems. And in this latest version of PAS (version 7.5.6) it's still possible to use that feature. As you can see in my initial post, I put two screen shots of the dimension with two hierarchies in PAS dataview, and works fine, without problems in the drill-down/up.
    From PAS online help:
    HIERARCHY is a Dimension command that defines the members and levels that comprise a particular hierarchy level within a dimension. It also allows multiple consolidation structures that stem from a central root of inputs. Use hierarchies when the input members are consolidated into more than one output member. When a dimension has hierarchies, members can have more than one path for rolling up into output levels. If a dimension has only one hierarchy, no HIERARCHY statement is necessary.
    Based on this, I create my example of a dimension (named MULTI) with two hierarchies (REGION and TYPE). Maybe the name I use for the second hierarchy create some confusion to you, because of the TYPE dimension that can exist in SSM. I just hope the problem I'm having in the SSM front-end is not related with the name I used for the second hierarchy!!!!
    I will rename that and test again.
    Regards
    Pedro

  • How to refresh a table with multiple joins

    Hi,
    First at all, I'm newby in ADF, and my english is no so good, sorry for that...
    I'm using JDeveloper 11g Release 2 (11.1.2.3.0). I have a table created from a view object that have multiple joins with other entities. When I insert a new row programmatically in one of the entities of the joins (not in the entitiy of the view object itself), the new row is created in the database correctly but the table don't show it. What can I do to refresh the table to see the new row created?
    Thanks in advance!

    You have to update the iterator the table is based on for the ui last. You do that by executing the query on the iterator again.
    Timo

  • Oracle hangs on query with multiple joins

    To test the sotftware from the LMS-vendor that are out partners we use virtual machines where we install Windows 2003 servers and Oracle XE
    While we were testing the software I've found that a particular query with multiple unions causes the CPU of the virtual machine totally claimed by oracle
    The query causes oracle to hang.
    I've found that the subcomponents of the query all return 0 rows (and response all immediately) combined into a query with at least 2 unions the query hangs the system
    I'm not familiar with with Database Management at all
    I've read something about SGA and PGA that could be the issue and tried to increase the target for both but it doesn't seem to do anything
    Some characterics
    Target Current
    Maximum System Global Area (SGA) Size: 380 MB 380 MB
    Program Global Area (PGA) Aggregate Target: 360 MB 38 MB
    Current Configuration: (SGA + PGA): 740 MB 418 MB
    Tablespaces Percent Used Allocated (MB) Used (MB) Datafiles
    SYSAUX 98.21% 460.00 451.75 1
    SYSTEM 73.09% 510.00 372.75 1
    DATA 99.13% 440.00 436.19 1
    UNDO 6.48% 160.00 10.38 1
    USERS 1.63% 100.00 1.63 1
    sort_area_size 65536
    shared_pool_reserved_size 5452595 TRUE size in bytes of reserved area of shared pool
    shared_pool_size 0 TRUE size in bytes of shared pool
    What other parameters are important? How could I get a good picture to see what's really going on?
    Some pointers, help would be appreciated.
    Regards,
    Remco

    Below is the base-query that is causing the problems
    SELECT /* Public - Internal learner */ r.id reg_id, i.id order_item_id, o.id order_id, o.order_no order_number, e.id person_id, format_name(e.fname , e.lname , @@005) learner_name , c.id company_id, c.name2 , ent.id entid, ctype.id ctypeid, ctype.name , i.status , items.description item_desc, substr ( i.flags , 1 , 1 ) is_conf , r.status status1, rs.description description1 , r.wlist_priority , r.reg_no , r.flags , o.status status2, o.split, null learnerViewOnly, null statusViewOnly, i.approved_status, decode(substr(r.flags,2,1),'1','true','false') isWalkIn, oa.id offering_action_id, oa.status profile_status ,c.name2 org_name ,ctype.name audience_sub_type ,items.description description ,o.order_no order_no ,orderList.description order_status ,approvalList.description approval_status ,e.fname learner_first_name ,e.lname learner_last_name FROM tpt_registration r INNER JOIN tpt_oe_order_items i ON i.reg_id = r.id INNER JOIN tpt_oe_order o ON i.order_id = o.id INNER JOIN cmt_person e ON r.student_id = e.id INNER JOIN tpt_company c ON e.company_id = c.id INNER JOIN tpt_offering_action oa on r.offering_action_id = oa.id LEFT OUTER JOIN tpt_roster_template_entry ent ON r.ros_temp_ent_id = ent.id LEFT OUTER JOIN tpt_customer_type ctype ON ent.customer_type_id = ctype.id INNER JOIN fgt_ext_sys_list_of_val rs ON to_char ( r.status ) = rs.name INNER JOIN fgt_ext_sys_list_of_val items ON to_char ( i.status ) = items.name INNER JOIN fgt_ext_sys_list_of_val orderList ON to_char ( o.status ) = orderList.name INNER JOIN fgt_ext_sys_list_of_val approvalList ON to_char(i.approved_status) = approvalList.name WHERE e.type = 100 AND r.class_id = @@001 AND r.status = nvl ( to_number(@@002) , r.status ) AND rs.locale_id = @@005 AND rs.list_id = 'sysli000000000000100' AND items.locale_id = @@005 AND items.list_id = 'sysli000000000000131' AND orderList.list_id = 'sysli000000000000129' AND orderList.locale_id = @@005 AND approvalList.list_id = 'sysli000000000000165' AND approvalList.locale_id = @@005 AND ((@@003 is null) or (@@003 is not null and r.student_id = @@003))
    UNION
    SELECT /* Public - External learner */ r.id reg_id, i.id order_item_id, o.id order_id, o.order_no , e.id person_id, format_name(e.fname , e.lname , @@005) , c.id company_id, c.name2 , ent.id entid, ctype.id ctypeid, ctype.name , i.status , items.description , substr ( i.flags , 1 , 1 ) is_conf , r.status status1, rs.description description1, r.wlist_priority , r.reg_no , r.flags , o.status status2, o.split, null learnerViewOnly, null statusViewOnly, i.approved_status, decode(substr(r.flags,2,1),'1','true','false') isWalkIn, oa.id offering_action_id, oa.status profile_status ,c.name2 org_name ,ctype.name audience_sub_type ,items.description description ,o.order_no order_no ,orderList.description order_status ,approvalList.description approval_status ,e.fname learner_first_name ,e.lname learner_last_name FROM tpt_registration r INNER JOIN tpt_oe_order_items i ON i.reg_id = r.id INNER JOIN tpt_oe_order o ON i.order_id = o.id INNER JOIN cmt_person e ON r.student_id = e.id INNER JOIN tpt_offering_action oa on r.offering_action_id = oa.id LEFT OUTER JOIN tpt_company c ON e.company_id = c.id LEFT OUTER JOIN tpt_roster_template_entry ent ON r.ros_temp_ent_id = ent.id LEFT OUTER JOIN tpt_customer_type ctype ON ent.customer_type_id = ctype.id INNER JOIN fgt_ext_sys_list_of_val rs ON to_char ( r.status ) = rs.name INNER JOIN fgt_ext_sys_list_of_val items ON to_char ( i.status ) = items.name INNER JOIN fgt_ext_sys_list_of_val orderList ON to_char ( o.status ) = orderList.name INNER JOIN fgt_ext_sys_list_of_val approvalList ON to_char(i.approved_status) = approvalList.name WHERE e.type = 200 AND r.class_id = @@001 AND r.status = nvl ( to_number(@@002) , r.status ) AND rs.locale_id = @@005 AND rs.list_id = 'sysli000000000000100' AND items.locale_id = @@005 AND items.list_id = 'sysli000000000000131' AND orderList.list_id = 'sysli000000000000129' AND orderList.locale_id = @@005 AND approvalList.list_id = 'sysli000000000000165' AND approvalList.locale_id = @@005 AND ((@@003 is null) or (@@003 is not null and r.student_id = @@003))
    UNION
    SELECT /* Public - Unassigned learner */ r.id reg_id, i.id order_item_id, o.id order_id, o.order_no , null person_id, null , null company_id, null , ent.id entidd, ctype.id ctypeid, ctype.name , i.status , items.description , substr ( i.flags , 1 , 1 ) is_conf , r.status status1, rs.description description1, r.wlist_priority , r.reg_no , r.flags , o.status status2, o.split, null learnerViewOnly, null statusViewOnly, i.approved_status, decode(substr(r.flags,2,1),'1','true','false') isWalkIn, oa.id offering_action_id, oa.status profile_status ,'' org_name ,ctype.name audience_sub_type ,items.description description ,o.order_no order_no ,orderList.description order_status ,approvalList.description approval_status ,'' learner_first_name ,'' learner_last_name FROM tpt_registration r INNER JOIN tpt_oe_order_items i ON i.reg_id = r.id INNER JOIN tpt_oe_order o ON i.order_id = o.id INNER JOIN tpt_offering_action oa on oa.id = r.offering_action_id LEFT OUTER JOIN tpt_roster_template_entry ent ON r.ros_temp_ent_id = ent.id LEFT OUTER JOIN tpt_customer_type ctype ON ent.customer_type_id = ctype.id INNER JOIN fgt_ext_sys_list_of_val rs ON to_char ( r.status ) = rs.name INNER JOIN fgt_ext_sys_list_of_val items ON to_char ( i.status ) = items.name INNER JOIN fgt_ext_sys_list_of_val orderList ON to_char ( o.status ) = orderList.name INNER JOIN fgt_ext_sys_list_of_val approvalList ON to_char(i.approved_status) = approvalList.name WHERE r.class_id = @@001 AND r.status = nvl ( to_number(@@002) , r.status ) AND r.student_id is null AND rs.locale_id = @@005 AND rs.list_id = 'sysli000000000000100' AND items.locale_id = @@005 AND items.list_id = 'sysli000000000000131' AND orderList.list_id = 'sysli000000000000129' AND orderList.locale_id = @@005 AND approvalList.list_id = 'sysli000000000000165' AND approvalList.locale_id = @@005 AND @@003 is null
    UNION
    SELECT /* Private - Internal learner */ r.id reg_id, i.id order_item_id, o.id order_id, o.order_no , e.id person_id, format_name(e.fname , e.lname , @@005) , c.id company_id, c.name2 , ent.id entid, ctype.id ctypeid, ctype.name , i.status , items.description , substr ( i.flags , 1 , 1 ) is_conf , r.status status1, rs.description description1 , r.wlist_priority , r.reg_no , r.flags , o.status status2, o.split, null learnerViewOnly, null statusViewOnly, i.approved_status, decode(substr(r.flags,2,1),'1','true','false') isWalkIn, oa.id offering_action_id, oa.status profile_status ,c.name2 org_name ,ctype.name audience_sub_type ,items.description description ,o.order_no order_no ,orderList.description order_status ,approvalList.description approval_status ,e.fname learner_first_name ,e.lname learner_last_name FROM tpt_registration r INNER JOIN let_pvt_offering_request pvt_offreq ON pvt_offreq.class_id = r.class_id INNER JOIN tpt_offering_action oa on oa.id = r.offering_action_id LEFT OUTER JOIN tpt_oe_order_items i ON i.part_id = pvt_offreq.id LEFT OUTER JOIN tpt_oe_order o ON i.order_id = o.id INNER JOIN cmt_person e ON r.student_id = e.id LEFT OUTER JOIN tpt_company c ON e.company_id = c.id LEFT OUTER JOIN tpt_roster_template_entry ent ON r.ros_temp_ent_id = ent.id LEFT OUTER JOIN tpt_customer_type ctype ON ent.customer_type_id = ctype.id INNER JOIN fgt_ext_sys_list_of_val rs ON to_char ( r.status ) = rs.name LEFT OUTER JOIN fgt_ext_sys_list_of_val items ON to_char ( i.status ) = items.name AND items.locale_id = @@005 AND items.list_id = 'sysli000000000000131' LEFT OUTER JOIN fgt_ext_sys_list_of_val orderList ON to_char ( o.status ) = orderList.name AND orderList.list_id = 'sysli000000000000129' AND orderList.locale_id = @@005 LEFT OUTER JOIN fgt_ext_sys_list_of_val approvalList ON to_char(i.approved_status) = approvalList.name AND approvalList.list_id = 'sysli000000000000165' AND approvalList.locale_id = @@005 WHERE e.type = 100 AND r.class_id = @@001 AND r.status = nvl ( to_number(@@002) , r.status ) AND rs.locale_id = @@005 AND rs.list_id = 'sysli000000000000100' AND ((@@003 is null) or (@@003 is not null and r.student_id = @@003))
    UNION
    SELECT /* Private - External learner */ r.id reg_id, i.id order_item_id, o.id order_id, o.order_no , e.id person_id, format_name(e.fname , e.lname , @@005) , c.id company_id, c.name2 , ent.id entid, ctype.id ctypeid, ctype.name , i.status , items.description , substr ( i.flags , 1 , 1 ) is_conf , r.status status1, rs.description description1 , r.wlist_priority , r.reg_no , r.flags , o.status status2, o.split, null learnerViewOnly, null statusViewOnly, i.approved_status, decode(substr(r.flags,2,1),'1','true','false') isWalkIn, oa.id offering_action_id, oa.status profile_status ,c.name2 org_name ,ctype.name audience_sub_type ,items.description description ,o.order_no order_no ,orderList.description order_status ,approvalList.description approval_status ,e.fname learner_first_name ,e.lname learner_last_name FROM tpt_registration r INNER JOIN let_pvt_offering_request pvt_offreq ON pvt_offreq.class_id = r.class_id INNER JOIN tpt_offering_action oa on r.offering_action_id = oa.id LEFT OUTER JOIN tpt_oe_order_items i ON i.part_id = pvt_offreq.id LEFT OUTER JOIN tpt_oe_order o ON i.order_id = o.id INNER JOIN cmt_person e ON r.student_id = e.id LEFT OUTER JOIN tpt_company c ON e.company_id = c.id LEFT OUTER JOIN tpt_roster_template_entry ent ON r.ros_temp_ent_id = ent.id LEFT OUTER JOIN tpt_customer_type ctype ON ent.customer_type_id = ctype.id INNER JOIN fgt_ext_sys_list_of_val rs ON to_char ( r.status ) = rs.name LEFT OUTER JOIN fgt_ext_sys_list_of_val items ON to_char ( i.status ) = items.name AND items.locale_id = @@005 AND items.list_id = 'sysli000000000000131' LEFT OUTER JOIN fgt_ext_sys_list_of_val orderList ON to_char ( o.status ) = orderList.name AND orderList.locale_id = @@005 AND orderList.list_id = 'sysli000000000000129' LEFT OUTER JOIN fgt_ext_sys_list_of_val approvalList ON to_char(i.approved_status) = approvalList.name AND approvalList.locale_id = @@005 AND approvalList.list_id = 'sysli000000000000165' WHERE e.type = 200 AND r.class_id = @@001 AND r.status = nvl ( to_number(@@002) , r.status ) AND rs.locale_id = @@005 AND rs.list_id = 'sysli000000000000100' AND ((@@003 is null) or (@@003 is not null and r.student_id = @@003)) ORDER BY 34,35,28,29,31,30,33,32

  • Performance Issue with Multiple Joins :-)

    Hi there! I have a dilemma over using multiple joins...and I am not sure whether there is any alternative to this. Please help me out if you can..
    I have a table DATA having 100 columns and 2 million records and I have another metadata table Code_Mappings. The issue is with migration of this data from upstreams to downstreams.
    Columns of DATA table is
    a,b,c,d,e,f,g,h.......ca.cb.cc.cd.....dz.
    Code_Mappings table is
    Source_code |Target code | category
    The problem arises when I join the metadata table for multiple joins..
    Around 75 columns out of 100 are category questions i.e I need to replace all Source codes in the data of those category columns with target codes WRT categories..
    Suppose A, C,D,I,J,K,L,W,X,Z,AA,BH are country category.
    My query to fetch data from DATA for column A would be
    Select decode(d.A, cm.source_code,cm.target_code,d.A) from DATA D,Code_Mappings CM where cm.category like 'country' and d.A=cm.source_code;
    In the similar way, I may have to join the same table for category 'country' for n no of columns if those columns have category as 'country'.
    Is there a alternative to use this table once and use the decode, mapping logic multiple times on columns..? Please let me know if there is anyways I can do it so that performance is enhanced in a significant manner.
    Another Issue is:
    Whenever the Column value is some junk, that record doesnt get fetched. In the above query, you can see that where clause has a condition of "d.A=cm.source_code" which not only filters out these required records but also avoids cartesian product.
    The basic requirement is all records should get fetched. I do not want to filter out anything.
    Please help me out.
    Thanks
    Mahesh

    1) I'm not a JD Edwards person, but I would wager that if you're to the point where you have consolidated all the schemas to a single instance that it would be possible and preferrable to consolidate everything further into a single schema. I have to believe that JD Edwards provides tools to restrict what bits a particular branch can see without requiring separate instances.
    2) What data are you accessing exactly? Are you always accessing data for a particular branch? Or do you need information from every branch?
    3) Is your application logging in as a single user? Or will there be 1 application user for every JD Edwards schema?
    4) Are you deploying your PL/SQL into 10-20 different schemas? Or into just 1?
    Whether or not you are explicitly using the schema name, Oracle will have to do a hard parse of every logically distinct SQL statement. Two SQL statements that access different tables that happen to share the same name are logically distinct, so your shared pool will end up with 10-20 copies of the "SELECT * FROM <<some table name>>" SQL statement if it is executed against every instance of <<some table name>>.
    The question may be whether it is better to explicitly provide the schema name or to rely on synonyms. You generate the same number of hard parses either way, but explicit schema names may improve latch contention during parses if Oracle has to do a lot of synonym resolution. Not many people/ applications are really hurt by this latch contention, though, so it is very hard to say whether this is a legitimate concern.
    Justin

  • Dimension Design - Single Dimension with Multiple Hierarchies

    Morning,
    the purpose of this discussion is to understand how we should design a specific dimension with 3 levels and multiple hierarchies for optimal performance.
    We have an institution dimension with the following characteristics:
    Characteristics
    Dimension: Institution
    Levels:
    1. Total Bank (TB) Level
    2. Peer Group (PG) Level
    3. Institution Level
    Hierarchies:
    1. Some of the hierarchies have 3 levels and others have only 2 levels (Skip Level)
    2. ALL the hierarchies have a TB level and an Institution level
    3. None of the hierarchies have the same leafs
    4. Some of the hierarchies leafs can overlap
    Design:
    We are considering two approaches for the institution dimension levels:
    a)
    Levels:
    Hierarchy 1 TB Level
    Hierarchy 1 PG Level
    Hierarchy 1 Inst Level
    Hierarchy 2 TB Level
    Hierarchy 2 Inst Level
    Hierarchy 3 TB Level
    Hierarchy 3 Inst Level
    Note:
    This approach is working and the resulting dimension and cubes are used by OBIEE, but some of the OBIEE analysis takes a long time (more than a minute) to return the results.
    At this point, we are not sure whether this approach will result in an optimal design from a performance perspective and are looking at restructuring the dimension to represent only the three conceptual levels as indicated below.
    b)
    Levels:
    1. Total Bank (TB) Level
    2. Peer Group (PG) Level
    3. Institution Level
    The rest of the dimension i.e. hierarchies, attributes and mappings are defined in the same way.
    The cube associated with this dimension have approximately 80 million records.
    Please advise on any best practices or design considerations that we need to take into account.
    Thanks

    No, it is not possible to have multiple hiearchies in a PC logical dimension.
    The concept of the Parent-Child (PC) hierarchy is completely different from the level-based hierarchy. Specifically the PC hierarchy expects a predefined / architected table with corresponding PC column/value structuring with or without attributes.
    Short story even shorter it is not possible.
    Longer...
    In the RPD the BMM actually prevents you from adding a new logical level, child level, or parent level when you have selected that the logical dimension be a parent child logical dimension with Parent-Child hierarchy.
    On another note...
    Have you tried architecting/building your PC source table so that it represents the roll-up and bottom child-levels like you are seeking? That is, that same member in the child column more than once having a separate parent value. That should be doable.
    That was a great question, please award points if this answered your question or it was helpful.
    Cheers,
    Christian
    http://www.artofbi.com

  • OBIEE Parent-Child Dimension with multiple hierarchies

    Is it possible to have in a parent-child dimension multiple hierarchies? I want to have the same botom childs to aggregate to different parrents. example.
    Account Dimension
    HR1-total
    HR1-parrent1
    CHILD1
    HR1-parrent2
    CHILD2
    HR2-total
    HR2-parrent1
    CHILD1
    CHILD2
    Thanks in advance.

    No, it is not possible to have multiple hiearchies in a PC logical dimension.
    The concept of the Parent-Child (PC) hierarchy is completely different from the level-based hierarchy. Specifically the PC hierarchy expects a predefined / architected table with corresponding PC column/value structuring with or without attributes.
    Short story even shorter it is not possible.
    Longer...
    In the RPD the BMM actually prevents you from adding a new logical level, child level, or parent level when you have selected that the logical dimension be a parent child logical dimension with Parent-Child hierarchy.
    On another note...
    Have you tried architecting/building your PC source table so that it represents the roll-up and bottom child-levels like you are seeking? That is, that same member in the child column more than once having a separate parent value. That should be doable.
    That was a great question, please award points if this answered your question or it was helpful.
    Cheers,
    Christian
    http://www.artofbi.com

  • Sql query with multiple joins to same table

    I have to write a query for a client to display business officers' names and title along with the business name
    The table looks like this
    AcctNumber
    OfficerTitle
    OfficerName
    RecKey
    90% of the businesses have exactly 4 officer records, although some have less and some have more.
    There is a separate table that has the AcctNumber, BusinessName about 30 other fields that I don’t need
    An individual account can have 30 or 40 records on the other table.
    The client wants to display 1 record per account.
    Initially I wrote a query to join the table to itself:
    Select A.OfficerTtitle, A.OfficerName, B.OfficerTitle, B.OfficerName, C.OfficerTtitle, C.OfficerName, D.OfficerTitle, D.OfficerName where A.AcctNumber = B.AcctNumber and A.AcctNumber = C.AcctNumber and A.AcctNumber = D.AcctNumber
    This returned tons of duplicate rows for each account ( number of records * number of records, I think)
    So added
    And A.RecKey > B.RecKey and B.RecKey > C. RecKey and C.RecKey . D.RecKey
    This works when there are exactly 4 records per account. If there are less than 4 records on the account it skips the account and if there are more than 4 records, it returns multiple rows.
    But when I try to l join this to the other table to get the business name, I get a row for every record on the other table
    I tried select distinct on the other table and the query runs for ever and never returns anything
    I tried outer joins and subqueries, but no luck so far. I was thinking maybe a subquery - if exists - because I don't know how many records there are on an account, but don't know how to structure that
    Any suggestions would be appreciated

    Welcome to the forum!
    user13319842 wrote:
    I have to write a query for a client to display business officers' names and title along with the business name
    The table looks like this
    AcctNumber
    OfficerTitle
    OfficerName
    RecKey
    90% of the businesses have exactly 4 officer records, although some have less and some have more.
    There is a separate table that has the AcctNumber, BusinessName about 30 other fields that I don’t need
    An individual account can have 30 or 40 records on the other table.
    The client wants to display 1 record per account.As someone has already mentioned, you should post CREATE TABLE and INSERT statements for both tables (relevant columns only). You don't have to post a lot of sample data. For example, you need to pick 1 out of 30 or 40 rows (max) for the same account, but it's almost certainly enough if you post only 3 or 4 rows (max) for an account.
    Also, post the results you want from the sample data that you post, and explain how you get those resutls from that data.
    Always say which version of Oracle you're using. This sounds like a PIVOT problem, and a new SELECT .... PIVOT feature was introduced in Oracle 11.1. If you're using Oracle 11, you don't want to have to learn the old way to do pivots. On the other hand, if you have Oracle 10, a solution that uses a new feature that you don't have won't help you.
    Whenever you have a question, please post CREATE TABLE and INSERT statements for some sample data, the results you want from that data, an explanation, and your Oracle version.
    Initially I wrote a query to join the table to itself:
    Select A.OfficerTtitle, A.OfficerName, B.OfficerTitle, B.OfficerName, C.OfficerTtitle, C.OfficerName, D.OfficerTitle, D.OfficerName where A.AcctNumber = B.AcctNumber and A.AcctNumber = C.AcctNumber and A.AcctNumber = D.AcctNumber Be careful, and post the exact code that you're running. The statement above can't be what you ran, because it doesn't have a FROM clause.
    This returned tons of duplicate rows for each account ( number of records * number of records, I think)
    So added
    And A.RecKey > B.RecKey and B.RecKey > C. RecKey and C.RecKey . D.RecKey
    This works when there are exactly 4 records per account. If there are less than 4 records on the account it skips the account and if there are more than 4 records, it returns multiple rows.
    But when I try to l join this to the other table to get the business name, I get a row for every record on the other table
    I tried select distinct on the other table and the query runs for ever and never returns anything
    I tried outer joins and subqueries, but no luck so far. I was thinking maybe a subquery - if exists - because I don't know how many records there are on an account, but don't know how to structure that
    Any suggestions would be appreciatedDisplaying 1 column from n rows as n columns on 1 row is called Pivoting . See the following link fro several ways to do pivots:
    SQL and PL/SQL FAQ
    Pivoting requires that you know exactly how many columns will be in the result set. If that number depends on the data in the table, then you might prefer to use String Aggregation , where the output consists of a huge string column, that contains the concatenation of the data from n rows. This big string can be formatted so that it looks like multiple columns. For different string aggregation techniques, see:
    http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php
    The following thread discusses some options for pivoting a variable number of columns:
    Re: Report count and sum from many rows into many columns

  • Custom Dimension with multiple children defined as "Never Share"

    Hyperion Planning - 11.1.1.3
    There is Custom dimension "Appliance" with root defined as a "Never Share". It has multiple level 0 (SubAppl1, SubAppl2, SubAppl3 etc) members with "Store". Data is some times loaded at root level and some times at the lower levels and at times both. What is the expected result?
    When POV is Appliance and when it is drilled down?
    For Ex:
    For Jan -
    Appliance is 100, No other members loaded with data.
    For Feb -
    Appliance is 30
    SubAppl1 is 10
    SubAppl2 is 10
    SubAppl3 is 5
    POV
    Appliance Jan - 100
    Appliance Feb - 30 or 25? and why?
    Trying to understand the behavior or "Never share" in this scenario.
    Appreciate your feedback.
    Edited by: 847514 on Mar 28, 2011 11:17 AM

    Never Share has no bearing on your sample. The Never Share flag is to prevent a implicit sharing which will happen when you have one parent with a single child under it. Your structure is not setup such that an implicit share would occur based on your example.
    I really do not recommend loading data at upper level members as this means you can never run a normal aggregation on your data. If you were to aggregate your data and you happened to have the AGGMISSG set to true you would see the data in your january example of 100 was removed due to the level 0 members not having any values.
    So the question of your February being 30 or 25 is did you load 30 to February Appliance or did you load to the level 0 and then aggregate?
    Regards,
    John A. Booth
    http://www.metavero.com

  • How to delete a row from a SQL Server CE Table with multiple JOINs?

    I want to delete a record from a SQL Server CE table.
    There are 3 tables scripts, options and results. I would like to remove a record from the results table. The where clause contains dynamic information which retrieved via other queries to different tables in the same database. These queries work fine and deliver
    the desired data.
    The Compact server is a clone of a remote table created using the sync framework. The same query to the remote table works fine.
    The error I get is:
    There was an error parsing the query. [ Token line number = 1,Token line offset = 10,Token in error = from ]
    The code that throws the exception is as follows:
    Dim connLoc As SqlCeConnection = New SqlCeConnection(My.Settings.ConnectionString)connLoc.Open()     Dim strDel As String = "Delete r from ResultsTable r inner join OptionsTable o ON o.TestName=r.TestName inner join ScriptTable c ON r.TestName=c.TestName WHERE r.TestName = '" & ds1Loc.Tables(0).Rows(0)(1) & "' AND [Index] = '" & lstIndex & "'"Dim cmdDel As SqlCeCommand = New SqlCeCommandcmdDel.CommandText = strDelcmdDel.Connection = connLoccmdDel.ExecuteNonQuery()
    The values held in ds1Loc.Tables(0).Rows(0)(1) and lstIndex are
    correct so should not be the problem.
    I also tried using parameterised queries
    Dim strDel As String = "Delete r from [ResultsTable] r inner join [OptionsTable] o ON o.TestName=r.TestName inner join [ScriptTable] c ON r.TestName=c.TestName WHERE r.TestName = @TestName AND [Index] = @lstIndex"
    Dim cmdDel As SqlCeCommand = New SqlCeCommand        cmdDel.CommandText = strDel       
    With cmdDel.Parameters           
    .Add(New SqlCeParameter("@TestName", ds1Loc.Tables(0).Rows(0)(1)))           
    .Add(New SqlCeParameter("@lstIndex", lstIndex))       
    End With 
    cmdDel.Connection = connLoc        cmdDel.ExecuteNonQuery()
    I have tried replacing the "=" with "IN" in the the WHERE clause but this has not worked.
    Is it the join that is causing the problem? I can do a select with the same search criteria and joins from the same database.
    Also this query works with SQL Server. Is it perhaps that SQL CE does not support the Delete function the same as SQL Server 2008? I have been looking at this for a while now and cannot find the source of the error. Any help would be greatly appreciated.

    Hello,
    In SQL Server Compact, we can use join in FROM clause. The DELETE statement fail may be caused by the FOREIGN KEY constraint.
    Please refer to:
    DELETE (SQL Server Compact)
    FROM Clause (SQL Server Compact)
    Regards,
    Fanny Liu
    Fanny Liu
    TechNet Community Support

  • Performance tuning of sql query with multiple joins

    My query takes at least half an hour to execute and the number of records returned are approx 1 lakh records.
    Structure of tables are:
    tblSession : ID,option1,option2,option3,option4,option5,option6,option7,option8,option9.
    tblOption : ID, labelID
    tblLabelDetail  : ID, LABELID, text
    optionID 1 to optionID9 are Foreign keys to table tblOption.ID
    My query is as below : 
    select 
    session.ID 
    ,session.tstamp
    ,session.score
    ,session.hid1
    ,session.hID2
    ,session.hID3
    ,session.collectionID
    ,session.consumerID
    ,session.langID
    ,cons_cust.text1 as    customCons_text1, 
    cons_cust.text2 as customCons_text2, 
    cons_cust.text3 as customCons_text3,
    cons_cust.text4 as customCons_text4,
    cons_cust.text5 as customCons_text5,
    cons_cust.text6 as customCons_text6,
    cons_cust.text7 as customCons_text7,
    cons_cust.text8 as customCons_text8,
    cons_cust.text9 as customCons_text9,
    ld_cons1.text as customCons_option1GUID, 
    ld_cons2.text as customCons_option2GUID, 
    ld_cons3.text as customCons_option3GUID, 
    ld_cons4.text as customCons_option4GUID ,
    ld_cons5.text as customCons_option5GUID, 
    ld_cons6.text as customCons_option6GUID, 
    ld_cons7.text as customCons_option7GUID, 
    ld_cons8.text as customCons_option8GUID, 
    ld_cons9.text as customCons_option9GUID,
    --session
    session_cust.text1 as  session_cust_text1, 
    session_cust.text2 as session_cust_text2, 
    session_cust.text3 as session_cust_text3,
    session_cust.text4 as session_cust_text4,
    session_cust.text5 as session_cust_text5,
    session_cust.text6 as session_cust_text6,
    session_cust.text7 as session_cust_text7,
    session_cust.text8 as session_cust_text8,
    session_cust.text9 as session_cust_text9,
    ld_sess1.text as session_cust_option1GUID, 
    ld_sess2.text as session_cust_option2GUID, 
    ld_sess3.text as session_cust_option3GUID, 
    ld_sess4.text as session_cust_option4GUID, 
    ld_sess5.text as session_cust_option5GUID, 
    ld_sess6.text as session_cust_option6GUID, 
    ld_sess7.text as session_cust_option7GUID, 
    ld_sess8.text as session_cust_option8GUID, 
    ld_sess9.text as session_cust_option9GUID, 
    session_cust.tStamp1,
    session_cust.tStamp2
    from mvSession session with (noexpand)
    inner join tblCollection c on c.ID=session.collectionID AND c.templateID = 405
    left join tblConsumer cons on cons.ID=session.consumerID and cons.sessionYM between 601 and 1412 and cons.sID=105
    left join vCustomConsumer cons_cust on cons_cust.sessionYM between 601 and 1412 and cons_cust.sID=105 and cons_cust.ID=cons.ID
    left join tbloption o_cons1 on o_cons1.id = cons_cust.option1 and  o_cons1.sid = 105
    left join tblLabelDetail ld_cons1 on ld_cons1.labelID = o_cons1.labelID and ld_cons1.langId = 1 and ld_cons1.eid = 107 
    left join tbloption o_cons2 on o_cons2.id = cons_cust.option2 and  o_cons2.sid = 105
    left join tblLabelDetail ld_cons2 on ld_cons2.labelID = o_cons2.labelID and ld_cons2.langId = 1 and ld_cons2.eid = 107 
    left join tbloption o_cons3 on o_cons3.id = cons_cust.option3 and  o_cons3.sid = 105
    left join tblLabelDetail ld_cons3 on ld_cons3.labelID = o_cons1.labelID and ld_cons3.langId = 1 and ld_cons3.eid = 107 
    left join tbloption o_cons4 on o_cons4.id = cons_cust.option4 and  o_cons4.sid = 105
    left join tblLabelDetail ld_cons4 on ld_cons4.labelID = o_cons4.labelID and ld_cons4.langId = 1 and ld_cons4.eid = 107 
    left join tbloption o_cons5 on o_cons5.id = cons_cust.option5 and  o_cons5.sid = 105
    left join tblLabelDetail ld_cons5 on ld_cons5.labelID = o_cons5.labelID and ld_cons5.langId = 1 and ld_cons5.eid = 107 
    left join tbloption o_cons6 on o_cons6.id = cons_cust.option6 and  o_cons6.sid = 105
    left join tblLabelDetail ld_cons6 on ld_cons6.labelID = o_cons6.labelID and ld_cons6.langId = 1 and ld_cons6.eid = 107 
    left join tbloption o_cons7 on o_cons7.id = cons_cust.option7 and  o_cons7.sid = 105
    left join tblLabelDetail ld_cons7 on ld_cons7.labelID = o_cons7.labelID and ld_cons7.langId = 1 and ld_cons7.eid = 107 
    left join tbloption o_cons8 on o_cons8.id = cons_cust.option8 and  o_cons8.sid = 105
    left join tblLabelDetail ld_cons8 on ld_cons8.labelID = o_cons8.labelID and ld_cons8.langId = 1 and ld_cons8.eid = 107 
    left join tbloption o_cons9 on o_cons9.id = cons_cust.option9 and  o_cons9.sid = 105
    left join tblLabelDetail ld_cons9 on ld_cons9.labelID = o_cons9.labelID and ld_cons9.langId = 1 and ld_cons9.eid = 107 
    left join vCustomSession session_cust on session_cust.sessionYM between 601 and 1412 and session_cust.sID=105 and session_cust.ID=session.ID
    left join tbloption o_sess1 on o_sess1.id = session_cust.option1 and  o_sess1.sid = 105
    left join tblLabelDetail ld_sess1 on ld_sess1.labelID = o_sess1.labelID and ld_sess1.langId = 1 and ld_sess1.eid = 107 
    left join tbloption o_sess2 on o_sess2.id = session_cust.option2 and  o_sess2.sid = 105
    left join tblLabelDetail ld_sess2 on ld_sess2.labelID = o_sess2.labelID and ld_sess2.langId = 1 and ld_sess2.eid = 107 
    left join tbloption o_sess3 on o_sess2.id = session_cust.option3 and  o_sess3.sid = 105
    left join tblLabelDetail ld_sess3 on ld_sess3.labelID = o_sess2.labelID and ld_sess3.langId = 1 and ld_sess3.eid = 107 
    left join tbloption o_sess4 on o_sess4.id = session_cust.option4 and  o_sess4.sid = 105
    left join tblLabelDetail ld_sess4 on ld_sess4.labelID = o_sess4.labelID and ld_sess4.langId = 1 and ld_sess4.eid = 107 
    left join tbloption o_sess5 on o_sess5.id = session_cust.option5 and  o_sess5.sid = 105
    left join tblLabelDetail ld_sess5 on ld_sess5.labelID = o_sess5.labelID and ld_sess5.langId = 1 and ld_sess5.eid = 107 
    left join tbloption o_sess6 on o_sess6.id = session_cust.option6 and  o_sess6.sid = 105
    left join tblLabelDetail ld_sess6 on ld_sess6.labelID = o_sess6.labelID and ld_sess6.langId = 1 and ld_sess6.eid = 107 
    left join tbloption o_sess7 on o_sess7.id = session_cust.option7 and  o_sess7.sid = 105
    left join tblLabelDetail ld_sess7 on ld_sess7.labelID = o_sess7.labelID and ld_sess7.langId = 1 and ld_sess7.eid = 107 
    left join tbloption o_sess8 on o_sess8.id = session_cust.option8 and  o_sess8.sid = 105
    left join tblLabelDetail ld_sess8 on ld_sess8.labelID = o_sess8.labelID and ld_sess8.langId = 1 and ld_sess8.eid = 107 
    left join tbloption o_sess9 on o_sess9.id = session_cust.option9 and  o_sess9.sid = 105
    left join tblLabelDetail ld_sess9 on ld_sess9.labelID = o_sess9.labelID and ld_sess9.langId = 1 and ld_sess9.eid = 107 
    where session.sID=105  and session.tStamp >= 'Sep  1 2014 12:00AM' and session.tStamp < 'Dec 12 2014 12:00AM'   
    order by session.tStamp, session.ID
    Is there a way , where i can simplify the joins with tbloption and tblLabelDetail and get my o/p in optimal time.
    Regards 

    I have headed towards another approach ie. using unpivot and then pivot.
    First i am converting option1-option9 into column , then doing  PIVOT to get back the same record . But issue is that when i am doing pivoting i am getting NULL values.
    My query is :
    select * into #t1  from
    select ID
    , option1
    , option2
    , option3
    , option4
    , option5
    , option6
    , option7
    , option8
    , option9
    from vCustomConsumer
    where sid=105
    and sessionYM = 1412 
    ) SourceTable
    UNPIVOT
       optionID FOR Col IN
        (option1 
    ,option2
    ,option3 
    ,option4 
    ,option5 
    ,option6 
    ,option7 
    ,option8 
    ,option9 )
    ) AS unpvt
    select t.ID,t.optionID,t.col,cast(ld.text as varchar(max)) as text into #t2
    from #t1 t
    left outer join tbloption o on o.ID =  t.optionID
    left outer join tblLabelDetail ld on ld.labelID = o.labelID and ld.langID=1 
    order by ID,col
    select ID,option1 
    ,option2
    ,[option3]
    ,option4 
    ,option5 
    ,option6 
    ,option7 
    ,option8 
    ,option9
    from
    select ID,optionID,col,text
    from #t2
    )up
    pivot 
    min(text)for col in 
    (option1 
    ,option2
    ,[option3]
    ,option4 
    ,option5 
    ,option6 
    ,option7 
    ,option8 
    ,option9
    )as pvt
    In my last query where i am using pivot, i am getting NULL values. When i check the data in temp table #t2 , it exists perfectly . But when pivoting i dont understand why it is returning most of the NULL values. I am getting data for only one column in single
    row.
    Below are some rows from result set finally obtained after pivoting :
    ID
    option1
    option2
    option3
    option4
    option5
    option6
    option7
    option8
    option9
    62949026
    NULL
    0 to 200 seconds
    NULL
    NULL
    NULL
    NULL
    NULL
    NULL
    NULL
    62966000
    NULL
    NULL
    4
    NULL
    NULL
    NULL
    NULL
    NULL
    NULL
    62966032
    NULL
    NULL
    4
    NULL
    NULL
    NULL
    NULL
    NULL
    NULL
    63090372
    NULL
    NULL
    NULL
    NULL
    EN
    NULL
    NULL
    NULL
    NULL
    63090375
    NULL
    NULL
    NULL
    NULL
    EN
    NULL
    NULL
    NULL
    NULL
    Thanks,

  • Dimension with multiple leafs

    Hello,
    We want to set up the following hierarchy:
    --- OXN
    ....|--- POT
    ....|....\--- RST
    ....|
    ....\--- OIN
    .........\--- PJT
    ..............\--- RST
    So this means OXN has 2 child levels (POT&OIN)
    and RST has 2 parent levels (PJT&POT)
    Now when we make this we get the following warning in the consistency checker:
    Warning: [38073] Dimension "<dimension_name> has multiple leaf levels which are not identical
    Does anybody know how we can solve this?
    Thanx in advance,
    Remc0

    I'd really like to know what causes this error to occur in the first place.
    For me I sat down to construct a time dimension.
    Single source table. Single drill path...
    Added year... Fine.
    Added Month... Fine
    Added Week... Fine.
    Added Day... Failed???
    Exactly the same process for Day as for week, month and year but for day I get the error.
    If I knew what criteria was being used to identify the error then i could figure out how to get around it but at the moment it almost looks like a bug( in this circumstance).

  • Update With Multiple Joins

    I have an update to perform for some 30,000 records. Table POR has POR.LOINC_CODE values that are null and I need to update them to the values of table MACL MACL.CODE_LINK_VALUE. I have the Select query written, but need some help on the update query using por.observation_code on a join to perform the update.
    Thanks in advance
    SELECT
    POR.OBSERVATION_CODE,
    POR.LOINC_CODE,
    MACL.CODE_LINK_VALUE
    FROM
    PAT_OBSERVATION PO,
    PAT_OBSERVATION_RESULT POR,
    PAT_LAB_RESULT PLR,
    MAINT_ALL_CODE MAC,
    MAINT_ALL_CODE_LINK MACL
    WHERE
    PO.PAT_OBSERVATION_ID = POR.PAT_OBSERVATION_ID
    AND PO.PAT_LAB_RESULT_ID = PLR.PAT_LAB_RESULT_ID
    AND MAC.ALL_CODE_ID = MACL.ALL_CODE_ID
    AND POR.PARENT_COMPANY_ID=520
    AND PLR.LABORATORY_ID =503
    and por.observation_code = mac.code_value
    and mac.code_type_id = 17
    AND MAC.ORDER_RESULT = 'R'
    AND POR.OBSERVATION_CODE IN('50026400','85988290,85990033','85999599','86002754','50054775','50054600','50054755','50061100','50054550','
    25025513','50062500','60000400','60001700','90001223','90001256','60000300','90000746','90000779','90000688','90000712','90001272','90001280','
    60002600','85999600','97014715','25016900','86002775','25008600','85988600','85999591','75013610','75013710','75013810','85989482','75400597','
    75400599','85997062','70004500','70043703','85997334','85997336','86005808','86005812','86005814','86002180','70019300','70043700','86002179')
    AND POR.LOINC_CODE is Null
    POR.OBSERVATION_CODE        POR.LOINC_CODE       MACL.CODE_LINK_VALUE
    90001223     (null)     10524-7
    90001256     (null)     18500-9
    90001256     (null)     18500-9
    90000746     (null)     19762-4
    90000779     (null)     19762-4

    Yes that is correct, I came up with the following in my development environment which work fine on 14 rows, I am just concerned on the live DB with 30,000 plus.
    Update
    PAT_OBSERVATION_RESULT POR1
    set POR1.LOINC_CODE =(
    SELECT
    MACL.CODE_LINK_VALUE
    FROM
    PAT_OBSERVATION PO,
    PAT_OBSERVATION_RESULT POR,
    PAT_LAB_RESULT PLR,
    MAINT_ALL_CODE MAC,
    MAINT_ALL_CODE_LINK MACL
    WHERE
    PO.PAT_OBSERVATION_ID = POR.PAT_OBSERVATION_ID
    AND PO.PAT_LAB_RESULT_ID = PLR.PAT_LAB_RESULT_ID
    AND MAC.ALL_CODE_ID = MACL.ALL_CODE_ID
    AND POR.PARENT_COMPANY_ID=9063
    AND PLR.LABORATORY_ID =503
    and por.observation_code = mac.code_value
    and mac.code_type_id = 17
    AND MAC.ORDER_RESULT = 'R'
    AND POR.OBSERVATION_CODE IN('50026400','85988290,85990033','85999599','86002754','50054775','50054600','50054755','50061100','50054550','
    25025513','50062500','60000400','60001700','90001223','90001256','60000300','90000746','90000779','90000688','90000712','90001272','90001280','
    60002600','85999600','97014715','25016900','86002775','25008600','85988600','85999591','75013610','75013710','75013810','85989482','75400597','
    75400599','85997062','70004500','70043703','85997334','85997336','86005808','86005812','86005814','86002180','70019300','70043700','86002179')
    and POR.LOINC_CODE is null
    and POR.PAT_OBSERVATION_RESULT_ID = POR1.PAT_OBSERVATION_RESULT_ID
    where exists(
    SELECT POR.PAT_OBSERVATION_RESULT_ID
    FROM
    PAT_OBSERVATION PO,
    PAT_OBSERVATION_RESULT POR,
    PAT_LAB_RESULT PLR,
    MAINT_ALL_CODE MAC,
    MAINT_ALL_CODE_LINK MACL
    where POR1.PAT_OBSERVATION_RESULT_ID =POR.PAT_OBSERVATION_RESULT_ID
    AND PO.PAT_OBSERVATION_ID = POR.PAT_OBSERVATION_ID
    AND PO.PAT_LAB_RESULT_ID = PLR.PAT_LAB_RESULT_ID
    AND MAC.ALL_CODE_ID = MACL.ALL_CODE_ID
    AND POR.PARENT_COMPANY_ID=9063
    AND PLR.LABORATORY_ID =503
    and por.observation_code = mac.code_value
    and mac.code_type_id = 17
    AND MAC.ORDER_RESULT = 'R'
    AND POR.OBSERVATION_CODE IN('50026400','85988290,85990033','85999599','86002754','50054775','50054600','50054755','50061100','50054550','
    25025513','50062500','60000400','60001700','90001223','90001256','60000300','90000746','90000779','90000688','90000712','90001272','90001280','
    60002600','85999600','97014715','25016900','86002775','25008600','85988600','85999591','75013610','75013710','75013810','85989482','75400597','
    75400599','85997062','70004500','70043703','85997334','85997336','86005808','86005812','86005814','86002180','70019300','70043700','86002179')
    and POR.LOINC_CODE is null
    Edited by: DanCodi on Feb 8, 2011 12:48 PM

  • Formulas in account dimension with multiple hierarchies

    Hello all,
    I am having troubles with finding the exact syntax for a formula in an account dimension that has two hierarchies:
    - I have two parent accounts in H1 (accountA and accountB)
    - I have one account in H2 that has to add up accountA and accountB
    It was easy in V4, the formula would just say: accountA+accountB
    Does anyone have the exact syntax for me in V5?
    Some extra info:
    - SAP BPC version: 5.1sp2
    - SQL 2005
    - I know that dimension formulas have a problem with performance, but believe me, in this case this, it is the only way
    Hope someone can help me,
    Alwin

    Alwin,
    There should be formulas in the MDXlib.lgl that look like the following examples:
    *Function Hir1_P(%Arg%)
         iif(AccountL.H2.CurrentMember is [AccountL].[H2].[All AccountL.H2] and AccountL.H3.CurrentMember is [AccountL].[H3].[All AccountL.H3],%Arg%, rollupchildren(AccountL.H1.currentMember,"+"))
    *endfunction
    *Function Hir2_P(%Arg%)
         iif(AccountL.H1.CurrentMember is [AccountL].[H1].[All AccountL.H1] and AccountL.H3.CurrentMember is [AccountL].[H3].[All AccountL.H3],%Arg%, rollupchildren(AccountL.H2.currentMember,"+"))
    *endfunction
    *Function Hir3_P(%Arg%)
         iif(AccountL.H1.CurrentMember is [AccountL].[H1].[All AccountL.H1] and AccountL.H2.CurrentMember is [AccountL].[H2].[All AccountL.H2],%Arg%, rollupchildren(AccountL.H3.currentMember,"+"))
    *endfunction
    *Function Hir1(%Arg%)
         iif(AccountL.H2.CurrentMember is [AccountL].[H2].[All AccountL.H2] and AccountL.H3.CurrentMember is [AccountL].[H3].[All AccountL.H3],%Arg%,Null)
    *endfunction
    *Function Hir2(%Arg%)
         iif(AccountL.H1.CurrentMember is [AccountL].[H1].[All AccountL.H1] and AccountL.H3.CurrentMember is [AccountL].[H3].[All AccountL.H3],%Arg%, Null)
    *endfunction
    *Function Hir3(%Arg%)
         iif(AccountL.H1.CurrentMember is [AccountL].[H1].[All AccountL.H1] and AccountL.H2.CurrentMember is [AccountL].[H2].[All AccountL.H2],%Arg%, Null)
    *endfunction
    These are functions that may be used to aggregate the values in version 5 across hierarchies.  I don't think you need them all, but I included the set I have in a current application. 
    I hope this helps.
    Petar

  • Help with Multiple-Join Query

    I have three tables, photos, comments and prices. Their
    structures (abbreviated) are as follows:
    photos
    photoID
    photoTitle
    prices
    priceID
    priceValue
    photoID_fk
    comments
    commentID
    commentText
    photoID_fk
    What I need to do is be able to display a list of photos with
    their correlating prices and comments, like so:
    Photo 1
    Price 1
    Price 2
    Comment 1
    comment 2
    Photo 2
    Price 1
    Price 2
    Photo 3
    Price 1
    Price 2
    Comment 1
    Notice that while each photo will always have the same number
    of "price" values, some might have comments and some might not.
    I will list the code that I have thus far, but let me briefly
    explain what is happening. With the setup I currently have, the
    photos display in the proper order with their proper price values
    and comments (if any). Unfortunately, on the ones WITH comments,
    the list of prices duplicates to match the number of comments
    returned. So, if Photo 1 has two comments, it will return "Price 1
    Price 2 Price 1 Price 2" for the output of the price section.
    I have been pulling my hair out over this, and any help that
    anyone could provide would be greatly appreciated and will
    potentially save my life.

    Dan--
    Thanks, as always, for your response. Your solution solved
    the problem!
    As to my database needs, the comments are related only to the
    photos.
    Basically, I have a a table that holds all information about
    photos in a gallery. I have another table which holds all the
    comments that users make about the photos. Finally, each and every
    photo has 8 sizes (all the same) for sale. So, I don't think the
    MTM relationship is there.
    Initially, I was simply going to put Size1, Size2, etc. in
    the photos table. However, my client wants to be able to add and/or
    remove sizes in the future. Therefore, I thought it would be easier
    if every photo was given "x" number of entries in the prices table,
    where "x" is the number of total price categories (currently 8).
    I don't want to monopolize more of your time, but if you have
    a second, I would be interested in hearing a more developed
    explanation of the restructuring that you proposed at the end of
    your last response. If you do not have time, I understand of
    course.
    Thanks a million for your help on this!

Maybe you are looking for