可能重复:
Need help with a SQL query that combines adjacent rows into a single row帮助编写SQL查询
所以这是我的桌子的样子。
..和我需要编写一个查询得到的输出是这样的:
这不是一门功课的问题。
可能重复:
Need help with a SQL query that combines adjacent rows into a single row帮助编写SQL查询
所以这是我的桌子的样子。
..和我需要编写一个查询得到的输出是这样的:
这不是一门功课的问题。
以下的答案必须是唯一有效的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
应该没问题。
家庭作业与否,仍然是[这一个](http://stackoverflow.com/questions/3476186)或[那一个](http://stackoverflow.com/questions/3476186)和[很多更多](http://stackoverflow.com/search?q=concat%2Brows%2BCSV+%5Bsql-server%5D) – gbn 2010-09-06 17:41:33