2011-04-02 68 views
1

中的另一個字段我試圖從字段AS「initial_cost」中選擇一個值,但值取決於channel_id字段的值在不同的列中,如果channel_id爲1,那麼它在field_id_4中,如果它是2,那麼它在field_id_10中。SQL SELECT字段依賴於行

我試過的下方,但無濟於事各種突變,

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 

誰能幫助?

回答

6

是否這樣?

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; 
+0

謝謝,這看起來不錯,但我不能讓它與其他SELECT領域如一起工作: SELECT標題,ENTRY_DATE , (SELECT CASE WHEN channel_id = 1 THEN field_id_4 WHEN channel_id = 2 THEN field_id_10 END as intial_cost FROM exp_channel _data) FROM exp_channel_data – James 2011-04-04 10:12:30

+0

@James,我更新了查詢以包含一些其他字段,以便您可以看到語法的樣子。 – Ronnis 2011-04-04 10:24:50

+0

太棒了,謝謝Ronnis! – James 2011-04-06 14:29:35

1
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 
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