可能重复:
Need help with a SQL query that combines adjacent rows into a single row
所以这就是我的表格。
..我需要编写一个查询来获取这样的输出:
这不是一个家庭作业问题。
答案 0 :(得分:3)
以下答案仅对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
答案 1 :(得分:0)
要测试的一些样本数据:
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
答案 2 :(得分:0)
这个问题多次被问到...... 答案总是一样的。像
这样的东西SELECT Category, GROUP_CONCAT(PROD SEPARATOR ", ") AS Prod, SUM(Price) AS Amt FROM yourtable GROUP BY Category
应该没问题。