2017-01-30 113 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