Jon*_*son 9 sql t-sql sql-server sql-server-2000 coalesce
我有一个表,我希望从每个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
Run Code Online (Sandbox Code Playgroud)
要为每个值获取正确的列,请使用以下SQL Select
SELECT ID,
COALESCE(Col1, Col2, Col3) AS Col
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
返回以下内容并且工作得很好
ID Col
-------------
1 A
2 C
3 X
4 D
Run Code Online (Sandbox Code Playgroud)
我想要的是返回的第三列,指示合并成功的列.以下是我希望生成的结果集:
ID Col Source
-----------------------
1 A Col1
2 C Col2
3 X Col3
4 D Col1
Run Code Online (Sandbox Code Playgroud)
ang*_*son 18
也许这会奏效吗?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2128 次 |
| 最近记录: |