оператор case в SQL, как вернуть несколько переменных?

Я хотел бы вернуть несколько значений в операторе case, например :

SELECT
  CASE
    WHEN <condition 1> THEN <value1=a1, value2=b1>
    WHEN <condition 2> THEN <value1=a2, value2=b2>
    ELSE <value1=a3, value3=b3>
  END
FROM <table>

Конечно, я могу написать условие case несколько раз, каждый раз возвращая одно значение. Однако, поскольку у меня много условий, скажем, 100. Не очень хорошо повторять условие case снова и снова.

Еще один вопрос, который я хотел бы задать, что произойдет, если одна запись соответствует нескольким условиям? Это означает, что она вернет все из них или только последнее? Например, условие 1 может стать подмножеством условия 2. Что произойдет?

23
задан Yuck 2 December 2011 в 15:41
поделиться

1 ответ

SELECT 
xmlcol.value('(value1)[1]', 'NVARCHAR(MAX)') AS value1,
xmlcol.value('(value2)[1]', 'NVARCHAR(MAX)') AS value2
FROM
(SELECT CASE
WHEN <condition 1> THEN
CAST((SELECT a1 AS value1, b1 AS value2 FOR XML PATH('')) AS XML)
WHEN <condition 2> THEN
CAST((SELECT a2 AS value1, b2 AS value2 FOR XML PATH('')) AS XML)
ELSE
CAST((SELECT a3 AS value1, b3 AS value2 FOR XML PATH('')) AS XML)
END AS xmlcol
FROM <table>) AS tmp
0
ответ дан 29 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

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