当前位置: 代码迷 >> Sql Server >> 两个字段组合的SQL统计查询话语
  详细解决方案

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

热度:93   发布时间:2016-04-27 11:20:14.0
两个字段组合的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 [email protected]+'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 行受影响)*/
  相关解决方案