如何确定COALESCE哪个列/值是运算符成功选择的?
技术问答
226 人阅读
|
0 人回复
|
2023-09-14
|
我有一个表,希望从每一个开始ID从3(只有3)列中找到第一个非空值Col开始,然后到Col2,再到Col3
9 [0 b( Z- D; [5 y注意:Col3为NEVER NULL6 j/ E9 ?- ?! u% P2 h9 L7 f2 V4 U0 f
ID Col1 Col2 Col3------------------------------1 A B X2 NULL C X3 NULL NULL X4 D NULL X为了获得每个值的正确列,我使用以下内容SQL Select0 |) q1 H, ~1 G. @% k: Y" R* n, [
SELECT ID, COALESCE(Col1,Col2,Col3) AS ColFROM MyTable这将返回以下内容,可以正常工作
" v% k; s B0 X2 y- D. sID Col-------------1 A2 C3 X4 D我想要的是返回的第三列,指示合并成功的列。以下是我想要的结果集:# j. F8 Z% S2 l, C: _, s9 o
ID Col Source-----------------------1 A Col12 C Col23 X Col34 D Col 5 l+ z6 [( Y$ G8 W' Q
解决方案: % f9 \4 ~: {8 |! ~% g+ [, ]
也许这行得通吗?0 C* D+ E+ V' O/ e+ z7 k8 k
SELECT ID, COALESCE(Col1,Col2,Col3) AS Col, CASE COALESCE(Col1,Col2,Col3) WHEN Col1 THEN 'Col WHEN Col2 THEN 'Col WHEN Col3 THEN 'Col ELSE 'Unknown' END AS SourceFROM MyTable |
|
|
|
|
|