我有一个表,我希望从每个 ID 的 3 个(并且只有 3 个)列中找到第一个非空值,从 Col1 开始,然后到 Col2,然后到 Col3
注意:Col3 永远不会为空
ID Col1 Col2 Col3
------------------------------
1 A B X
2 NULL C X
3 NULL NULL X
4 D NULL X
要为每个值获取正确的列,我使用以下 SQL 选择
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