#sql #sql-server #select
#sql #sql-сервер #выберите
Вопрос:
У меня есть следующий результат SQL из SELECT:
col1 | col2 | col3
A | 10 | 20
B | 10 | 20
C | 10 | 20
Я хочу иметь дополнительный столбец col4
в результатах, который заполняется на основе следующих условий:
- если
col1
естьA
, тоcol4
должно быть заполнено значением изcol2
- если
col1
естьB
, тоcol4
должно быть заполнено значением изcol3
- если
col1
естьC
, тоcol4
должно быть заполнено значением-
Поэтому ожидаемый результат выглядит следующим образом:
col1 | col2 | col3 | col4
A | 10 | 20 | 10
B | 10 | 20 | 20
C | 10 | 20 | -
Ответ №1:
Если ваши столбцы являются целыми числами, то вы не должны использовать фактическое -
значение в качестве результата:
SELECT col1,
col2,
col3,
CASE
WHEN col1 = 'A' THEN col2
WHEN col1 = 'B' THEN col3
WHEN col1 = 'C' THEN NULL
END col4
FROM dbo.YourTable;
Теперь, если вам нужна строка в качестве результата для col4
, вы можете использовать:
SELECT col1,
col2,
col3,
CASE
WHEN col1 = 'A' THEN CAST(col2 AS VARCHAR(10))
WHEN col1 = 'B' THEN CAST(col3 AS VARCHAR(10))
WHEN col1 = 'C' THEN '-'
END col4
FROM dbo.YourTable;