Использование регистра в условии 2 полей - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь сделать это, но не получается.

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

Случай: я хочу создать CASE на SQL сервере, где ACTIVITY_ID = 100003 имеет ACTIVITY_STATUS = 1002, затем 'DONE', иначе 'NOT YET'

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Похоже, что там, где вы потерпели неудачу, рассматривал 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;

NB: Вам лучше поставить также круглые скобки SQL Помочь серверу расставить приоритеты для некоторых расчетов / фильтров.

0 голосов
/ 20 апреля 2020

Это ясно из вопроса.

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