2015-10-06 114 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