在两个字段条件中使用case



我试图做到这一点,但失败了。

CASE 
WHEN ACTIVITY_id in ('100003') and (activity_status=1002) THEN 'Sudah' 
ELSE 'Belum' 
END AS ISPENETAPAN

这是表格:

PERIOD_ID   WORKFLOW_ID USER_FOLIO_ID   ACTIVITY_ID ACTIVITY_STATUS PARENT_ACTIVITY_ID
2020            1       30167856        100001          1002                100004
2020            1       30167856        100002          1002                100001
2020            1       30167856        100003          1002                100002
2020            1       30167856        100004          1002                NULL
2020            1       30167856        100005          1000                100001

(这个结果肯定还没有(

PERIOD_ID   WORKFLOW_ID USER_FOLIO_ID   ACTIVITY_ID ACTIVITY_STATUS PARENT_ACTIVITY_ID
2020            1       30172023        100001          1002                100004
2020            1       30172023        100002          1000                100001
2020            1       30172023        100003          1001                100002
2020            1       30172023        100004          1002                NULL
2020            1       30172023        100005          1000                100001

案例:我想在SQL Server中制作一个CASE,其中ACTIVITY_ID = 100003ACTIVITY_STATUS = 1002,然后是'DONE',否则是'NOT YET'

似乎您失败的地方是通过放置Apostrope('(ACTIVITY_ID视为文本

CASE
WHEN (ACTIVITY_id  = 100003         -- If this is Text, put '100003', otherwise no (')
AND ACTIVITY_STATUS  = 1002)    -- This is Numeric. The Parentheses help in the Filter Priority
THEN 'DONE'
ELSE 'NOT YET'
END AS ActivityResult;

注意:最好也放上括号,以帮助SQL Server对某些计算/筛选器进行优先级排序。

这个问题很清楚。

CASE 
WHEN (activity_id = 100003 AND activity_status = 1002) THEN 'done' 
ELSE 'not yet' END

最新更新