Ошибка "Отсутствует оператор" в этом запросе в MS

UPDATE Temp1 a 
  SET TimeStamp1 = CASE(
                     WHEN (a.TimeStamp1 IN
                       (SELECT TimeStamp1 
                          FROM a 
                          WHERE a.DealName = 'Disha Rufous' 
                          AND a.DealStep = 'Sent for Risk feedback')
                       - a.TimeStamp1 IN
                       (SELECT TimeStamp1 
                          FROM a 
                          WHERE a.DealName = 'Disha Rufous' 
                          AND a.DealStep = 'De-dupe confirmation received')
                       IS NOT NULL THEN '0' ELSE TimeStamp1 END) 
  WHERE Temp1.DealName = 'dede' 
  AND Temp1.StepName = 'Risk feedback addressed'

Ошибка указывает на THEN в CASE функция.

1 ответ

Ваш CASE является:

CASE
    WHEN a IN (X) - a IN (Y) IS NOT NULL
        THEN...
    ELSE ...
END

Я полагаю, теперь вы можете понять, почему это не сработает, вы WHEN пункт недействителен. a IN (X) возвращается true или же falseнет смысла вычитать другую true/false значение из него, а затем, чтобы увидеть, является ли он нулевым или нет.

Я предполагаю, что вы хотите:

UPDATE Temp1 a SET TimeStamp1 = CASE 
                                        WHEN a.TimeStamp1 IN(SELECT TimeStamp1 FROM Temp1 WHERE DealName = 'Disha Rufous' AND DealStep = 'Sent for Risk feedback') 
                                            AND a.TimeStamp1 IN(SELECT TimeStamp1 FROM Temp1 WHERE DealName = 'Disha Rufous' AND DealStep = 'De-dupe confirmation received') 
                                            THEN '0'  
                                        ELSE TimeStamp1 
                                END 
WHERE DealName = 'dede' AND StepName = 'Risk feedback addressed'

Возможно, вам придется изменить AND в OR в WHEN пункт, в зависимости от ваших требований.

Другие вопросы по тегам