回答

收藏

如何确定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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则