Как я могу ВЫБРАТЬ несколько столбцов в СЛУЧАЕ КОГДА на SQL Server?

Я искал этот сайт экстенсивно, но не могу найти решение.

Вот пример моего запроса:

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)

очевидно, я не учитываю большой запрос, я просто хотел видеть, возможно ли это.

Я знаю, что, вероятно, мог просто сделать "СЛУЧАЙ" дважды, но полагал, что я спрошу...

24
задан Kiquenet 7 November 2018 в 10:11
поделиться

2 ответа

Проблема в том, что в том, что в том случае, если это оператор не будет работать так, как вы пытаетесь его использовать. Вы можете использовать его только для переключения значения одного поля в запрос. Если я понимаю, что вы пытаетесь сделать, вам может понадоваться это:

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
28
ответ дан 28 November 2019 в 23:34
поделиться

Нет, Case - это функция, и может возвращать только одно значение. Я думаю, что вам придется дублировать логику вашего дела.

Другой вариант будет обертывать весь запрос с помощью IF и иметь два отдельных запроса для возврата результатов. Не видя остальной части запроса, сложно сказать, если бы это будет работать для вас.

13
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: