【问题标题】:SQL SELECT field dependent of another field in rowSQL SELECT 字段依赖于行中的另一个字段
【发布时间】:2011-04-02 21:27:30
【问题描述】:

我正在尝试从字段 AS“initial_cost”中选择一个值,但该值位于不同的列中,具体取决于 channel_id 字段的值,如果 channel_id 为 1,那么它在 field_id_4 中,如果它是 2,那么它;s 在 field_id_10 中。

我尝试了以下的各种突变,但无济于事,

SELECT (CASE WHEN channel_id = 1 
        THEN field_id_4 
        FROM exp_channel_data 

        WHEN channel_id = 2 
        THEN field_id_10 FROM exp_channel_data 
        END) as initial_cost

谁能帮忙?

【问题讨论】:

    标签: sql select case


    【解决方案1】:

    像这样?

    select title
          ,entry_date
          ,case when channel_id = 1 then field_id_4
                when channel_id = 2 then field_id_10
            end as initial_cost
      from exp_channel_data;
    

    【讨论】:

    • 谢谢,这看起来不错,但我无法让它与其他 SELECT 字段一起使用,例如:SELECT title, entry_date, (SELECT CASE WHEN channel_id = 1 THEN field_id_4 WHEN channel_id = 2 THEN field_id_10 END作为初始成本 FROM exp_channel_data) FROM exp_channel_data
    • @James,我更新了查询以包含一些其他字段,以便您查看语法的样子。
    【解决方案2】:

    或者使用case <column> when <value> 代替case when <condition>

    select  case channel_id 
            when 1 then field_id_4
            when 2 then field_id_10
            end as initial_cost
    from    exp_channel_data
    

    【讨论】:

      【解决方案3】:
      SELECT CASE WHEN channel_id = 1 THEN field_id_4 
         WHEN channel_id = 2 THEN field_id_10 END as intialcost
         FROM exp_channel_data
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-16
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2019-03-11
        • 1970-01-01
        • 2019-01-20
        • 1970-01-01
        相关资源
        最近更新 更多