日期:2014-05-16 浏览次数:20441 次
部门表
deptid deptname
1 中南海
2 国务院
..................
商户表
accountid accountname
1 中石化
2 中海油
..................
消费记录表
id deptid deptname accountid accountname money
1 1 中南海 1 中石化 400
2 1 中南海 2 中海油 300
3 2 国务院 1 中石化 500
.................................................................................................
需要以下结果
deptname money accountname
中南海 700 中石化,中海油
国务院 500 中石化
........................................................................................
IF EXISTS(SELECT NAME FROM sys.objects AS o WHERE NAME = 'test')
DROP TABLE test
CREATE TABLE test
( id INT ,
deptid INT ,
deptname NVARCHAR(10) ,
accountid INT ,
accountname NVARCHAR(10) ,
[money] INT
)
GO
INSERT INTO test
SELECT 1 , 1 , N'中南海' , 1 , N'中石化' , 400 UNION ALL
SELECT 2 , 1 , N'中南海' , 2 , N'中海油' , 300 UNION ALL
SELECT 3 , 2 , N'国务院' , 2 , N'中石化' , 500
GO
--执行查询------------------
SELECT
deptname , SUM([MONEY]) AS [money] , STUFF((SELECT ',' + accountname FROM test AS e WHERE e.deptname = t.deptname FOR XML PATH('')) ,1,1,'') AS accountname
FROM test AS t GROUP BY t.deptname
/*
deptname money accountname
---------- ----------- -----------------------------
中南海 700 中石化,中海油
国务院 500 中石化
*/