如何将单独的记录合并为一个?

时间:2016-05-30 11:59:09

标签: mysql sql

我有一个表product和两列idpricing_category,我有一个查询

SELECT DISTINCT ppp.`id` AS productid ,ppp.`pricing_category` AS type1
FROM `product` ppp
WHERE ppp.`finish_product_id`=1

结果是:

enter image description here

我希望type在一行中显示为type1,type2,type3一行。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用条件聚合来完成:

SELECT t.productID,
       MAX(CASE WHEN t.type1 = 1 THEN 1 ELSE 0 END) as type1_ind,
       MAX(CASE WHEN t.type1 = 2 THEN 1 ELSE 0 END) as type2_ind,
       MAX(CASE WHEN t.type1 = 3 THEN 1 ELSE 0 END) as type3_ind
FROM YourTable t
GROUP BY t.productID

这对于所有productID都是动态的,而不仅仅是特定的。要选择特定的一个,请将group by替换为WHERE子句。

如果他有(1)或不(0),每个产品都会返回一个指示。

例如对于数据:

PRODUCTID | Type1
   1          1
   1          2
   1          3
   2          3

这将返回:

PRODUCTID | TYPE1_IND | TYPE2_IND | TYPE3_IND
    1           1            1           1
    2           0            0           1

或者将它们全部作为一列使用GROUP_CONCAT()

SELECT t.productID,
       GROUP_CONCAT(concat('TYPE',t.type1))
FROM YourTable t
GROUP BY t.productID

答案 1 :(得分:0)

您可以使用GROUP_CONCAT

select id productid,
       group_concat(concat('type', pricing_category) order by pricing_category) type
from product
where finish_product_id = 1
group by id;

请参阅SQLFiddle