2015-10-06 102 views
0

相同的列名的列我有一個表:創建基於不同的價值

Meta table

如上圖顯示還有很多其他meta_appl_id的。

現在我想運行一個SQL查詢,以便根據「meta_value」的值創建列。我想:

SELECT * , 
if (`meta_value` = 'physically challenged' , 'yes', '') as PH, 
if (`meta_value` = 'kannada medium' , 'yes', '') as Kannada, 
if (`meta_value` = 'rural' , 'yes', '') as rural, 
if (`meta_value` = 'woman' , 'yes', '') as woman 
FROM `applicant_meta` WHERE `meta_value` = 'physically challenged' or `meta_value` = 'woman' group by meta_appl_id; 

,但不能得到所需要的輸出,只有一個值,如圖:

Output

其實行meta_appl_id 59它必須表現出博士 - 是的,農村的 - 是的和女人是的,但它的唯一顯示在女人(因爲它是查詢中的最後一個陳述)。

回答

1
SELECT meta_appl_id, if(PH= 0, 'no', 'yes'), if(WOMAN= 0, 'no', 'yes') 
FROM (
    SELECT meta_appl_id 
     , (select count(1) FROM applicant_meta as innertab where UPPER(innertab.meta_appl_id) = UPPER(aa.meta_appl_id) and UPPER(meta_value)=UPPER('physically challenged')) as PH 
     , (select count(1) FROM applicant_meta as innertab where innertab.meta_appl_id = aa.meta_appl_id and UPPER(meta_value)='WOMAN') as WOMAN 
    FROM applicant_meta as aa 
    GROUP BY meta_appl_id 
) as bb; 

請根據需要添加其他可能的列。我在這裏顯示了2列。

+0

感謝您的答案,但它不工作。它像上面的圖像一樣給出答案。 – Shridhar

+0

那麼你可以檢查你的表格數據嗎?可能是區分大小寫或不需要空間的問題。我的解決方案需要UPPER案例 - 'PH'和'WOMAN'。至少複製粘貼應該適用於這兩列。 –

+0

謝謝你的工作。 – Shridhar