首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

两个字段组合的SQL统计查询话语

2012-09-15 
两个字段组合的SQL统计查询语句样表:Orders字段:goodsName(物品名)applyPerson(申请人) classify(物品类别

两个字段组合的SQL统计查询语句
样表:Orders
字段:goodsName(物品名) applyPerson(申请人) classify(物品类别) department(部门)totalPrice(总金额)

求查询结果如下:

  类别1 类别2 类别3

部门1 金额1 金额2 金额3

部门2 .. .. ..

部门3 .. .. ..
 
表中的 部门 和 类别 的个数不固定,因此查询出的数据表的行数和列数都是不固定的

先谢谢各位大侠了!

[解决办法]
你的要求需要用动态SQL来实现,参考下面链接
http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html
[解决办法]
http://blog.csdn.net/holicc/article/details/7904048
[解决办法]

SQL code
/* Orders字段:goodsName(物品名) applyPerson(申请人) classify(物品类别) department(部门)totalPrice(总金额)*/CREATE TABLE OrderS(GoodsName NVARCHAR(20),ApplyPerson NVARCHAR(10),Classify NVARCHAR(20),Department NVARCHAR(10),TotalPrice DECIMAL(22,2))INSERT INTO OrderSSELECT 'R0204301','01','A','SA',8102UNION ALLSELECT 'R0204302','02','A','HR',12UNION ALLSELECT 'R0204302','02','B','HR',21UNION ALLSELECT 'R0204302','02','B','HR',1DECLARE @Sql NVARCHAR(4000)SET @Sql =' 'SELECT @Sql =@Sql+'SUM(CASE WHEN Classify ='''+Classify+''' THEN TotalPrice ELSE 0 END) AS '+Classify+',' FROM OrderS GROUP BY ClassifySET @Sql = 'SELECT Department,'+LEFT(@Sql,LEN(@Sql)-1)+' FROM OrderS GROUP BY Department'EXEC (@Sql)/*Department A                                       B---------- --------------------------------------- ---------------------------------------HR         12.00                                   22.00SA         8102.00                                 0.00(2 行受影响)*/ 

热点排行
Bad Request.