SQL SELECT:包含基于其他列

时间:2016-10-12 15:29:25

标签: sql sql-server select

我从SELECT获得以下SQL结果:

col1 | col2 | col3
A    | 10   | 20
B    | 10   | 20
C    | 10   | 20

我想在结果中添加一个列col4,根据以下条件填充:

  • 如果col1A,则应使用col4
  • 中的值填充col2
  • 如果col1B,则应使用col4
  • 中的值填充col3
  • 如果col1C,那么col4应填充值-

因此预期结果如下:

col1 | col2 | col3 | col4
A    | 10   | 20   | 10
B    | 10   | 20   | 20
C    | 10   | 20   | -

1 个答案:

答案 0 :(得分:4)

如果您的列是整数,那么您不应该使用实际的-作为结果:

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;