我有一张表,我希望找到第一个非空值从3(并且只有3)列为每个ID从Col1开始,然后到Col2然后到Col3
注意:Col3永远不会为空
ID Col1 Col2 Col3 ------------------------------ 1 A B X 2 NULL C X 3 NULL NULL X 4 D NULL X
SELECT ID,COALESCE(Col1,Col2,Col3) AS Col FROM MyTable
它返回以下并且工作正常
ID Col ------------- 1 A 2 C 3 X 4 D
我想要的是返回的第三列,指出合并成功的列.以下是我想制作的结果集:
ID Col Source ----------------------- 1 A Col1 2 C Col2 3 X Col3 4 D Col1
解决方法
也许这会奏效吗
SELECT ID,Col3) AS Col,CASE COALESCE(Col1,Col3) WHEN Col1 THEN 'Col1' WHEN Col2 THEN 'Col2' WHEN Col3 THEN 'Col3' ELSE 'Unknown' END AS Source FROM MyTable