我有一张表,我希望找到第一个非空值从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