PeeJay2583
Starting Member
40 Posts |
Posted - 2012-07-02 : 09:24:16
|
Hi everyone,I have a working query from a colleague who uses Oracle, and I would like to use this same query in SQLServer.This query uses TRUNC,DECODE,LENGTH commands, and I cannot seem to find an equivalent way to do this in SQLServer.Here is the query:(SELECT DM_CUSTOMER_RES_CUST_DATA_DIM.U_RESOURCE_HR_ID, DM_VW_RESOURCE_DIM.level3, DM_VW_RESOURCE_DIM.level4, CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END, DM_VW_RESOURCE_DIM.level5, DM_VW_WBS22_DIM.LEVEL2, DM_VW_ACTIVITY_DIM.work_id, DM_VW_ACTIVITY_DIM.PROJECT, DM_VW_WORK_ATTRIBUTE_DIM.wbs6, DM_VW_WORK_ATTRIBUTE_DIM.wbs7, DM_VW_WORK_ATTRIBUTE_DIM.wbs5, sum( DM_VW_BASE_FACT.actual_effort ), DM_TIME_DIM.yearmo, DM_VW_ACTIVITY_DIM.description, DM_VW_ACTIVITY_DIM.work_type, DM_VW_RESOURCE_DIM.description, DM_VW_WORK_ATTRIBUTE_DIM.wbs2, DECODE(TO_CHAR(DM_TIME_DIM.period_start,'D'), '1', DM_TIME_DIM.period_start, TRUNC(DM_TIME_DIM.period_finish - 6)), DM_VW_ACTIVITY_DIM.work_status, DM_VW_RESOURCE_ATTRIBUTE_DIM.obs20, DM_VW_RESOURCE_DIM.level6, DM_VW_RES_ATT_30_39_DIM.descr37, DM_VW_RESOURCE_DIM.resource_type, DM_VW_RESOURCE_DIM.level2, LPAD(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION,LENGTH(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION) + DM_VW_ACTIVITY_DIM.DEPTH*2,' '), DM_VW_ACTIVITY_DIM.structure_orderFROM DM_VW_RES_ATT_30_39_DIM RIGHT OUTER JOIN DM_VW_RESOURCE_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_RES_ATT_30_39_DIM.RESOURCE_CODE) INNER JOIN DM_VW_BASE_FACT ON (DM_VW_BASE_FACT.resource_code=DM_VW_RESOURCE_DIM.resource_code) INNER JOIN DM_TIME_DIM ON (DM_TIME_DIM.PERIOD_NUMBER=DM_VW_BASE_FACT.PERIOD_NUMBER) INNER JOIN DM_VW_ACTIVITY_BR ON (DM_VW_ACTIVITY_BR.CHILD_CODE=DM_VW_BASE_FACT.ACTIVITY_CODE) INNER JOIN DM_VW_ACTIVITY_DIM ON (DM_VW_ACTIVITY_DIM.activity_code=DM_VW_ACTIVITY_BR.parent_code) INNER JOIN DM_VW_USER_ACTIVITY_BR ON (DM_VW_USER_ACTIVITY_BR.structure_code=DM_VW_ACTIVITY_DIM.ACTIVITY_CODE AND DM_VW_USER_ACTIVITY_BR.user_name = 'PVMASTER') INNER JOIN DM_VW_WORK_ATTRIBUTE_DIM ON (DM_VW_ACTIVITY_DIM.activity_code=DM_VW_WORK_ATTRIBUTE_DIM.activity_code) INNER JOIN DM_VW_WBS22_DIM ON (DM_VW_WORK_ATTRIBUTE_DIM.wbs22_code=DM_VW_WBS22_DIM.STRUCTURE_CODE) INNER JOIN DM_VW_USER_RESOURCE_BR ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_USER_RESOURCE_BR.structure_code AND DM_VW_USER_RESOURCE_BR.user_name= 'PVMASTER') INNER JOIN DM_VW_RESOURCE_ATTRIBUTE_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_RESOURCE_ATTRIBUTE_DIM.RESOURCE_CODE) INNER JOIN DM_CUSTOMER_RES_CUST_DATA_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_ID=DM_CUSTOMER_RES_CUST_DATA_DIM.RESOURCE_ID) WHERE ( DM_VW_RESOURCE_DIM.level3 In @prompt('Enter value(s) for Business Area:','A','Resources\Business Area',Multi,Free,Persistent,,User:0) AND DM_TIME_DIM.yearmo In @prompt('Enter value(s) for Year/Mo:','N','Time Periods\Year/Mo',Multi,Free,Persistent,,User:1) AND CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END = 'Project' AND CASE WHEN DM_VW_ACTIVITY_BR.gap = 0 THEN 'Y' ELSE 'N' END = 'Y' AND DM_VW_ACTIVITY_DIM.detailed = 'N' )GROUP BY DM_CUSTOMER_RES_CUST_DATA_DIM.U_RESOURCE_HR_ID, DM_VW_RESOURCE_DIM.level3, DM_VW_RESOURCE_DIM.level4, CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END, DM_VW_RESOURCE_DIM.level5, DM_VW_WBS22_DIM.LEVEL2, DM_VW_ACTIVITY_DIM.work_id, DM_VW_ACTIVITY_DIM.PROJECT, DM_VW_WORK_ATTRIBUTE_DIM.wbs6, DM_VW_WORK_ATTRIBUTE_DIM.wbs7, DM_VW_WORK_ATTRIBUTE_DIM.wbs5, DM_TIME_DIM.yearmo, DM_VW_ACTIVITY_DIM.description, DM_VW_ACTIVITY_DIM.work_type, DM_VW_RESOURCE_DIM.description, DM_VW_WORK_ATTRIBUTE_DIM.wbs2, DECODE(TO_CHAR(DM_TIME_DIM.period_start,'D'), '1', DM_TIME_DIM.period_start, TRUNC(DM_TIME_DIM.period_finish - 6)), DM_VW_ACTIVITY_DIM.work_status, DM_VW_RESOURCE_ATTRIBUTE_DIM.obs20, DM_VW_RESOURCE_DIM.level6, DM_VW_RES_ATT_30_39_DIM.descr37, DM_VW_RESOURCE_DIM.resource_type, DM_VW_RESOURCE_DIM.level2, LPAD(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION,LENGTH(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION) + DM_VW_ACTIVITY_DIM.DEPTH*2,' '), DM_VW_ACTIVITY_DIM.structure_orderHAVING ( sum( DM_VW_BASE_FACT.actual_effort ) > 0 OR sum( DM_VW_BASE_FACT.reported_effort ) > 0 )UNION SELECT DM_CUSTOMER_RES_CUST_DATA_DIM.U_RESOURCE_HR_ID, DM_VW_RESOURCE_DIM.level3, DM_VW_RESOURCE_DIM.level4, CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END, DM_VW_RESOURCE_DIM.level5, DM_VW_WBS22_DIM.LEVEL2, DM_VW_ACTIVITY_DIM.work_id, DM_VW_ACTIVITY_DIM.PROJECT, DM_VW_WORK_ATTRIBUTE_DIM.wbs6, DM_VW_WORK_ATTRIBUTE_DIM.wbs7, DM_VW_WORK_ATTRIBUTE_DIM.wbs5, sum( DM_VW_BASE_FACT.actual_effort ), DM_TIME_DIM.yearmo, DM_VW_ACTIVITY_DIM.description, DM_VW_ACTIVITY_DIM.work_type, DM_VW_RESOURCE_DIM.description, DM_VW_WORK_ATTRIBUTE_DIM.wbs2, DECODE(TO_CHAR(DM_TIME_DIM.period_start,'D'), '1', DM_TIME_DIM.period_start, TRUNC(DM_TIME_DIM.period_finish - 6)), DM_VW_ACTIVITY_DIM.work_status, DM_VW_RESOURCE_ATTRIBUTE_DIM.obs20, DM_VW_RESOURCE_DIM.level6, DM_VW_RES_ATT_30_39_DIM.descr37, DM_VW_RESOURCE_DIM.resource_type, DM_VW_RESOURCE_DIM.level2, LPAD(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION,LENGTH(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION) + DM_VW_ACTIVITY_DIM.DEPTH*2,' '), DM_VW_ACTIVITY_DIM.structure_orderFROM DM_VW_RES_ATT_30_39_DIM RIGHT OUTER JOIN DM_VW_RESOURCE_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_RES_ATT_30_39_DIM.RESOURCE_CODE) INNER JOIN DM_VW_BASE_FACT ON (DM_VW_BASE_FACT.resource_code=DM_VW_RESOURCE_DIM.resource_code) INNER JOIN DM_TIME_DIM ON (DM_TIME_DIM.PERIOD_NUMBER=DM_VW_BASE_FACT.PERIOD_NUMBER) INNER JOIN DM_VW_ACTIVITY_BR ON (DM_VW_ACTIVITY_BR.CHILD_CODE=DM_VW_BASE_FACT.ACTIVITY_CODE) INNER JOIN DM_VW_ACTIVITY_DIM ON (DM_VW_ACTIVITY_DIM.activity_code=DM_VW_ACTIVITY_BR.parent_code) INNER JOIN DM_VW_USER_ACTIVITY_BR ON (DM_VW_USER_ACTIVITY_BR.structure_code=DM_VW_ACTIVITY_DIM.ACTIVITY_CODE AND DM_VW_USER_ACTIVITY_BR.user_name = 'PVMASTER') INNER JOIN DM_VW_WORK_ATTRIBUTE_DIM ON (DM_VW_ACTIVITY_DIM.activity_code=DM_VW_WORK_ATTRIBUTE_DIM.activity_code) INNER JOIN DM_VW_WBS22_DIM ON (DM_VW_WORK_ATTRIBUTE_DIM.wbs22_code=DM_VW_WBS22_DIM.STRUCTURE_CODE) INNER JOIN DM_VW_USER_RESOURCE_BR ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_USER_RESOURCE_BR.structure_code AND DM_VW_USER_RESOURCE_BR.user_name= 'PVMASTER') INNER JOIN DM_VW_RESOURCE_ATTRIBUTE_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_CODE=DM_VW_RESOURCE_ATTRIBUTE_DIM.RESOURCE_CODE) INNER JOIN DM_CUSTOMER_RES_CUST_DATA_DIM ON (DM_VW_RESOURCE_DIM.RESOURCE_ID=DM_CUSTOMER_RES_CUST_DATA_DIM.RESOURCE_ID) WHERE ( DM_VW_RESOURCE_DIM.level3 In @prompt('Enter value(s) for Business Area:','A','Resources\Business Area',Multi,Free,Persistent,,User:1) AND CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END = 'Standard' AND DM_VW_ACTIVITY_DIM.depth = 7 AND DM_VW_RESOURCE_DIM.depth = 7 AND DM_TIME_DIM.yearmo In @prompt('Enter value(s) for Year/Mo:','N','Time Periods\Year/Mo',Multi,Free,Persistent,,User:2) )GROUP BY DM_CUSTOMER_RES_CUST_DATA_DIM.U_RESOURCE_HR_ID, DM_VW_RESOURCE_DIM.level3, DM_VW_RESOURCE_DIM.level4, CASE WHEN DM_VW_ACTIVITY_DIM.activity_type = 'P' THEN 'Project' WHEN DM_VW_ACTIVITY_DIM.activity_type = 'L' THEN 'Service' ELSE 'Standard' END, DM_VW_RESOURCE_DIM.level5, DM_VW_WBS22_DIM.LEVEL2, DM_VW_ACTIVITY_DIM.work_id, DM_VW_ACTIVITY_DIM.PROJECT, DM_VW_WORK_ATTRIBUTE_DIM.wbs6, DM_VW_WORK_ATTRIBUTE_DIM.wbs7, DM_VW_WORK_ATTRIBUTE_DIM.wbs5, DM_TIME_DIM.yearmo, DM_VW_ACTIVITY_DIM.description, DM_VW_ACTIVITY_DIM.work_type, DM_VW_RESOURCE_DIM.description, DM_VW_WORK_ATTRIBUTE_DIM.wbs2, DECODE(TO_CHAR(DM_TIME_DIM.period_start,'D'), '1', DM_TIME_DIM.period_start, TRUNC(DM_TIME_DIM.period_finish - 6)), DM_VW_ACTIVITY_DIM.work_status, DM_VW_RESOURCE_ATTRIBUTE_DIM.obs20, DM_VW_RESOURCE_DIM.level6, DM_VW_RES_ATT_30_39_DIM.descr37, DM_VW_RESOURCE_DIM.resource_type, DM_VW_RESOURCE_DIM.level2, LPAD(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION,LENGTH(DM_VW_ACTIVITY_DIM.FULL_DESCRIPTION) + DM_VW_ACTIVITY_DIM.DEPTH*2,' '), DM_VW_ACTIVITY_DIM.structure_orderHAVING ( sum( DM_VW_BASE_FACT.reported_effort ) > 0 OR sum( DM_VW_BASE_FACT.actual_effort ) > 0 ))Any help would be appreciated! |
|