我有一个表,希望从每个ID的3(只有3)列中找到第一个非空值,从Col1开始,然后到Col2,再到Col3
注意:Col3为NEVER NULL
ID Col1 Col2 Col3 ------------------------------ 1 A B X 2 NULL C X 3 NULL NULL X 4 D NULL X
为了获得每个值的正确列,我使用以下SQL Select
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, COALESCE(Col1, Col2, Col3) AS Col, CASE COALESCE(Col1, Col2, Col3) WHEN Col1 THEN 'Col1' WHEN Col2 THEN 'Col2' WHEN Col3 THEN 'Col3' ELSE 'Unknown' END AS Source FROM MyTable