Ошибка "Отсутствует оператор" в этом запросе в 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
пункт, в зависимости от ваших требований.