日期:2014-05-17  浏览次数:20630 次

求一查询方法
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    23
PC32.5            32    12    43
PII42            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    A
GROUP BY 地区 

EXEC('
SELECT  *
FROM    (
         SELECT 类型 , 地区 , SUM(数量) AS 数量
         FROM   A
         GROUP BY 类型 , 地区
        ) AS a PIVOT( MAX(数量) FOR 地区 IN ('+@s+') ) as pvt
')