Mysql,为多个值选择相同的列,不同的条件
问题描述:
我无法弄清楚如何使用where子句创建多个选择,以便为我的名称字段中的三个方案中的每一个都有一列。Mysql,为多个值选择相同的列,不同的条件
查询我现在是:
SELECT
pd_extrafields.packetDetailsId,
pd_extrafields.ex_value as Credit
FROM
pd_extrafields
where pd_extrafields.ex_title = "Credit,A,B,C,D,E,F"
我怎么能拉其他两列到相同的查询符合下列条件(基本上我想这三个查询合并成一个,并保持柱名):
SELECT
pd_extrafields.packetDetailsId,
pd_extrafields.ex_value as AccountNum
FROM
pd_extrafields
where pd_extrafields.ex_title = "Account#"
&
SELECT
pd_extrafields.packetDetailsId,
pd_extrafields.ex_value as OrderStat
FROM
pd_extrafields
where pd_extrafields.ex_title = "New/Existing"
答
ü se CASE
。
select packetDetailsId, GROUP_CONCAT(Credit) AS Credit, GROUP_CONCAT(AccountNum) AS AccountNum, GROUP_CONCAT(OrderStat) AS OrderStat FROM
(SELECT pd_extrafields.packetDetailsId,
CASE WHEN pd_extrafields.ex_title LIKE ('%Credit%')
THEN pd_extrafields.ex_value ELSE NULL END as Credit,
CASE WHEN pd_extrafields.ex_title LIKE ('%Account%')
THEN pd_extrafields.ex_value ELSE NULL END as AccountNum,
CASE WHEN pd_extrafields.ex_title LIKE ('%Existing%')
THEN pd_extrafields.ex_value ELSE NULL END as OrderStat
FROM pd_extrafields) AS TempTab GROUP BY packetDetailsId
谢谢Ravindra的快速回复。它几乎可行,我得到一个错误,然后删除“OrderStat”后的逗号似乎有帮助,但它不会返回该列的任何值。还有一种方法可以合并/分组,因此每个'packetDetailsId'结果出现在一行/每行上? – alex 2013-03-04 21:03:48
谢谢指出。编辑我的查询。我认为它会显示一行每包详细信息ID,除非你在不同的行中具有相同的包详细信息ID。不是吗?你得到的输出是什么? – 2013-03-04 21:08:32
这里是一个链接到sql小提琴。 http://sqlfiddle.com/#!2/fa2a3/1也不包括OrderStat列的任何输出。 – alex 2013-03-04 21:28:37