【问题标题】:Select dynamic column based on value of another column?根据另一列的值选择动态列?
【发布时间】:2015-09-25 18:35:54
【问题描述】:

鉴于下表,我想根据WhichName 列的值动态选择Name1 或Name2 字段。

id  Name1   Name2   WhichName   SomeValue
1   Bob     James   1           Blue
2           Steve   2           Horse
3   Fred            1           Radish

结果应如下所示:

id  Name    SomeValue
1   Bob     Blue
2   Steve   Horse
3   Fred    Radish

DBMS 是缓存

【问题讨论】:

    标签: sql case intersystems-cache


    【解决方案1】:

    您可以使用case:

    select id,
           (case when WhichName = 1 then Name1 else Name2 end) as Name,
           SomeValue
    from <table>;
    

    注意:如果你喜欢Name1,除非是NULL,那么你可以使用COALESCE():

    select id, coalesce(Name1, Name2) as Name, SomeValue
    from <table>;
    

    【讨论】:

    • 这行得通,但我不能拥有开放式else。如何处理多个案例?
    • 另外,谢谢,但是合并选项不能满足我的需要。
    • 我想出了多个 WHEN 的事情,但您可能会更新您的答案以反映它。这非常有用。
    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    相关资源
    最近更新 更多