我有一张这样的表
SA_ID ---+---Acct_Id---+---SA_Type
101 111 TYPE1
102 111 TYPE2
103 112 TYPE1
我有一个查询来让acct_id拥有多个sa_type
select acct_id,count(*) from sa_tbl
having count(*) > 1
group by acct_id;
我得到了这样的结果
acct_id ---+---count(*)
111 2
但我需要得到这样的结果:
acct_id ---+---count(*)-----+sa_type1----+---sa_type2
111 2 TYPE1 TYPE2
答案 0 :(得分:1)
我试图得到你提到的结果,但能够得到类似的东西 在SQL Fiddle
上查看SELECT tbl.`Acct_Id` AS 'Acct_Id',COUNT(`Acct_Id`) AS 'counts',
GROUP_CONCAT(`SA_Type`) AS 'types'
FROM `sa_tbl` AS tbl
GROUP BY tbl.`Acct_Id`
HAVING counts > 1
希望这会对你有帮助!
答案 1 :(得分:0)
检查枢轴功能,在此处查看问题MySQL pivot table
此功能适用于Oracle和MySQL。对于其他数据库(如果需要),您可以自己另外检查。
答案 2 :(得分:0)
如果你的RDBMS不支持PIVOT(已经建议你),你可以使用MAX / CASE / GROUP BY的组合:
select
acct_id,
max((case when sa_type = 'TYPE1' then sa_id else NULL end)) as type1,
max((case when sa_type = 'TYPE2' then sa_id else NULL end)) as type2
from sa_tbl
group by acct_id
输出:
acct_id type1 type2
112 103
111 101 102