【发布时间】:2010-09-06 17:34:27
【问题描述】:
可能重复:
Need help with a SQL query that combines adjacent rows into a single row
这就是我的桌子的样子。
..我需要编写一个查询来获得这样的输出:
这不是作业题。
【问题讨论】:
标签: sql sql-server tsql pivot
可能重复:
Need help with a SQL query that combines adjacent rows into a single row
这就是我的桌子的样子。
..我需要编写一个查询来获得这样的输出:
这不是作业题。
【问题讨论】:
标签: sql sql-server tsql pivot
以下答案仅对 SQL Server 2005+ 有效:
SELECT t.category,
STUFF((SELECT ','+ x.prod
FROM TABLE x
WHERE x.category = t.category
GROUP BY x.prod
FOR XML PATH('')), 1, 1, '') AS prod,
SUM(t.price) AS amt
FROM TABLE t
GROUP BY t.category
【讨论】:
一些用于测试的样本数据:
DECLARE @Sample TABLE (ID INT, Name VARCHAR(15), Price INT)
INSERT @Sample
SELECT 1, 'Ford', 100 UNION ALL
SELECT 1, 'Cereal', 200 UNION ALL
SELECT 2, 'Fruits', 30 UNION ALL
SELECT 2, 'Fruits2',70 UNION ALL
SELECT 3, 'Soap', 40
SELECT * FROM @Sample
查询将是:
SELECT s3.ID, Stf.Conc,
SUM(s3.Price) PriceSum
FROM @Sample s3 INNER JOIN (
SELECT DISTINCT s1.ID,
STUFF((SELECT ',' + s2.Name
FROM @Sample AS s2
WHERE s2.ID = s1.ID
FOR XML PATH('')), 1, 1, '') Conc
FROM @Sample s1) AS Stf
ON s3.ID = Stf.ID
GROUP BY s3.ID, Stf.Conc
【讨论】:
这个问题被问了很多次...... 答案总是一样的。类似的东西
SELECT Category, GROUP_CONCAT(PROD SEPARATOR ", ") AS Prod, SUM(Price) AS Amt FROM yourtable GROUP BY Category
应该没问题。
【讨论】: