帮助编写SQL查询

时间:2010-09-06 17:34:27

标签: sql sql-server tsql pivot

  

可能重复:
  Need help with a SQL query that combines adjacent rows into a single row

所以这就是我的表格。

alt text

..我需要编写一个查询来获取这样的输出:

alt text

这不是一个家庭作业问题。

3 个答案:

答案 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

应该没问题。