SQL SELECT: новый столбец со значениями, основанными на другом столбце

#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;