2017-01-30 116 views
-2

我有一個條件(在業務對象),如下CASE與IN子句

=If([Actual ]=0;Sum([Applied] In ([Project];[ Name];[Number];[Sub ]))) 

,我需要將其轉換爲CASE語句我OBIEE

下面是我曾試圖查詢,但它不工作:

SELECT 
    CASE 
    WHEN F.ACTUAL_EQP_COST = 0 
     THEN SUM((F.HRS_APPLIED) IN(F.PROJECT,F.NAME,F.NUMBER,F.SUB)) 
    ELSE 0 
    END 
FROM F 
+0

嘗試用樣本數據和預期的效果編輯你的問題。查詢沒有意義。 –

+1

這是什麼?[Sum([Applied] In([Project]; [Name]; [Number]; [Sub])「是什麼意思? –

+0

我相信IN()裏面的那些是列名....好像它們是標誌或類似的東西 – Veljko89

回答

1

大概

select SUM(F.HRS_APPLIED) 
from DTS_OSC_WIP_REP_CST_ANALYSIS_A F 
where F.ACTUAL_EQP_COST = 0 
group by F.PROJECT,F.WIP_ENTITY_NAME,F.OPERATION_NUMBER,F.OPERATION_SUB_SEQ 
0

您不能在「then」語句中使用「in」。 我不能準確理解,但事情朝着這個方向可能會有所幫助:

select 
CASE WHEN F.ACTUAL_EQP_COST = 0 
THEN (SELECT SUM(F1.HRS_APPLIED) 
FROM DTS_OSC_WIP_REP_CST_ANALYSIS_A F1 
WHERE F1.column_name IN (F.PROJECT,F.WIP_ENTITY_NAME,F.OPERATION_NUMBER,F.OPERATION_SUB_SEQ)) 
ELSE 0 END 
from DTS_OSC_WIP_REP_CST_ANALYSIS_A F