如何在一列中合并来自同一列的不同值?

时间:2017-05-29 08:05:29

标签: sql sql-server

我想创建此表并在我的报告中使用它。

我有一张这样的表:

--------------------------------------
sum          commodity           unit 
--------------------------------------
100           a4 paper           x
200           a5 paper           y
  7           a4 paper           z
410           pencil             e
300           a5 paper           w

如何从上表创建这样的表?

--------------------------------------
sum          commodity           unit 
--------------------------------------
107           a4 paper           x-z
500           a5 paper           y-w
410           pencil             e

2 个答案:

答案 0 :(得分:2)

如果使用SQL服务器,请使用以下查询

CREATE TABLE table2(sums INT, commodity VARCHAR(100),unit VARCHAR(2))

INSERT INTO table2(sums , commodity ,unit)
SELECT 100,'a4 paper','x' UNION ALL
SELECT 200,'a5 paper','y' UNION ALL
SELECT 7,'a4 paper','z' UNION ALL
SELECT 410,'pencil','e' UNION ALL
SELECT 300,'a5 paper','w' 

 SELECT SUM(sums) , commodity , STUFF( (SELECT '-' + unit FROM table2 I 
 WHERE I.commodity = O.commodity FOR XML PATH('')),1,1,'') unit
 FROM table2 O
 GROUP BY commodity

答案 1 :(得分:0)

由于你没有提到你的RDBMS,你可以使用类似的东西

select sum(sum),
commodity,
group_concat(unit SEPARATOR '-') from commo2 t
group by commodity;

GROUP_CONCAT适用于MYSQL。您可以在RDBMS中搜索group_concat的替代项,就像在Oracle中一样,您可以使用LISTAGG。但逻辑是相同的

MYSQL中的演示

http://rextester.com/ZXZA16316