Вложение оператора Case в сумму - SQL Server - PullRequest
0 голосов
/ 10 мая 2019

Возникли проблемы с этим:

У меня есть следующий запрос, который дает мне именно то представление, которое мне нужно.

SELECT t.Week,
       SUM(t.Hours) AS AH,
       SUM(c.Input) AS input,
       SUM(c.[recruitedPos]) AS recruitedPos,
       (SUM(t.Hours) - SUM(c.Input)) AS Possible
FROM tempPOC AS t
     LEFT JOIN (SELECT Week,
                       SUM(input) AS Input,
                       SUM([Normal Weekly Hours]) AS recruitedPos,
                       Shop
                FROM colData
                GROUP BY week,
                         Shop) AS c ON t.Week = c.Week
                                   AND c.Shop = t.Store
GROUP BY t.Week,
         t.Store
ORDER BY t.Week;

То, с чем у меня возникают проблемы, - это запись оператора case вустановите любые значения из возможных псевдонимов в 0, если они ниже 0.

Я думал, что это будет так же просто, как

(CASE(SUM(t.Hours - c.Hours)) < 0 then 0 else Possible end as Possible)

, но это дает мне ошибку

Сообщение 156, Уровень 15, Состояние 1, Строка 9
Неверный синтаксис рядом с ключевым словом "as".

Ввод:

Week, AH, Input, RecruitedPos, Possible
1,    15, 25,    13,            -10
1,    30, 15,    15,            15

ожидаемый результат:

Week, AH, Input, RecruitedPos, Possible
1,    15, 25,    13,            0  
1,    30, 15,    15,            15

1 Ответ

2 голосов
/ 10 мая 2019
CASE
    WHEN SUM(t.Hours) - SUM(c.Input) < 0 THEN 0
    ELSE SUM(t.Hours) - SUM(c.Input)
END AS Possible
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...