当前位置: 代码迷 >> Sql Server >> 求一查询方法解决思路
  详细解决方案

求一查询方法解决思路

热度:8   发布时间:2016-04-25 01:14:58.0
求一查询方法
SQL code
表A数据:编号     地区        类型    时间   数量     9    湖南区    修旧物资    201209    56    9    湖南区    修旧物资    201209    73    9    湖南区    烟煤    201209    2    9    湖南区    药品    201209    65    9    湖南区    助磨剂    201209    60    9    湖南区    药品    201209    75    10    湖北区    PC32.5    201101    34    10    湖北区    PC32.5    201101    48    10    湖北区    PC32.5(资源综合利用)    201101    35    10    湖北区    PC32.5(资源综合利用)    201101    49    10    湖北区    PII42.5    201101    28    


查询结果:

SQL code
项目              江西      湖北    湖南大区                        煤炭            33    21    32修旧物资          43    56    43    助磨剂            22    43    23PC32.5            32    12    43PII42            44    32    12其他煤            13    11    


求方式方法,求sql语句。

------解决方案--------------------
select *
from (select 类型,地区,sum(数量) as 数量 from A group by 类型,地区) as a 
pivot(sum(数量) for 地区 in ([江西],[湖北],[湖南大区])) as b
------解决方案--------------------
SQL code
DECLARE @s VARCHAR(MAX)SELECT  @s = ISNULL(@s + ',') + QUOTENAME(地区)FROM    AGROUP BY 地区 EXEC('SELECT  *FROM    (         SELECT 类型 , 地区 , SUM(数量) AS 数量         FROM   A         GROUP BY 类型 , 地区        ) AS a PIVOT( MAX(数量) FOR 地区 IN ('+@s+') ) as pvt')