Я искал этот сайт экстенсивно, но не могу найти решение.
Вот пример моего запроса:
SELECT
ActivityID,
Hours = (CASE
WHEN ActivityTypeID <> 2 THEN
FieldName = (Some Aggregate Sub Query),
FieldName2 = (Some other aggregate sub query)
WHEN ActivityTypeID = 2 THEN
FieldName = (Some Aggregate Sub Query with diff result),
FieldName2 = (Some Other Aggregate Sub Query with diff result)
END)
очевидно, я не учитываю большой запрос, я просто хотел видеть, возможно ли это.
Я знаю, что, вероятно, мог просто сделать "СЛУЧАЙ" дважды, но полагал, что я спрошу...
Проблема в том, что в том, что в том случае, если это оператор
не будет работать так, как вы пытаетесь его использовать. Вы можете использовать его только для переключения значения одного поля в запрос. Если я понимаю, что вы пытаетесь сделать, вам может понадоваться это:
SELECT
ActivityID,
FieldName = CASE
WHEN ActivityTypeID <> 2 THEN
(Some Aggregate Sub Query)
ELSE
(Some Aggregate Sub Query with diff result)
END,
FieldName2 = CASE
WHEN ActivityTypeID <> 2 THEN
(Some Aggregate Sub Query)
ELSE
(Some Aggregate Sub Query with diff result)
END
Нет, Case
- это функция, и может возвращать только одно значение. Я думаю, что вам придется дублировать логику вашего дела.
Другой вариант будет обертывать весь запрос с помощью IF и иметь два отдельных запроса для возврата результатов. Не видя остальной части запроса, сложно сказать, если бы это будет работать для вас.