2017-01-30 1 views
-2

J'ai une condition (dans les objets d'affaires) comme ci-dessousCASE avec clause IN

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

que je dois le convertir en instruction CASE pour mon OBIEE

Voici la requête que je l'avais essayé mais ne fonctionne pas:

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

Essayez d'éditer votre question avec des données d'échantillons et les résultats souhaités. La requête n'a aucun sens. –

+1

Qu'est-ce que cela signifie "Sum ([Applied] In ([Projet]; [Nom]; [Numéro]; [Sub])"? –

+0

Je crois que ceux qui sont dans IN() sont des noms de colonnes .... semble être flags ou quelque chose comme ça – Veljko89

Répondre

1

probablement

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

Vous ne pouvez pas utiliser "in" dans une instruction "then". Je ne comprenais pas exactement, mais quelque chose dans ce sens pourrait aider:

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