返回视图中两列中的一列 - 无论哪一列都不为空

时间:2011-03-04 21:16:57

标签: sql sql-server sql-server-2005

我有一个包含三列的表格:

ColumnA          ColumnB         ColumnC
AAA               NULL            123
BBB               222             NULL
CCC               NULL            NULL

我想创建一个SELECT语句,它将返回ColumnA,然后是第二列,它将显示ColumnB的值,除非ColumnB为null;否则它将显示ColumnC的值,即使它是NULL。我可以使用IF语句吗?类似的东西:

SELECT ColumnA, 
IF(ColumnB IS NULL, ColumnC, ColumnB)
FROM table

**如果我这样做了,下一步就是返回连接列而不是ColumnB的值。实际上IF语句是

IF(table.ColumnB IS NULL, table.ColumnC, table2.ColumnD)

2 个答案:

答案 0 :(得分:12)

使用COALESCE

SELECT ColumnA, COALESCE(ColumnB, ColumnC) as 'Value'

答案 1 :(得分:2)

阅读问题的结尾听起来你需要使用CASE

CASE WHEN table.ColumnB IS NULL 
     THEN table.ColumnC 
     ELSE table2.ColumnD 
END AS Whatever