怎么写这条sql语句

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:11:54
表A
国家 物品类型 数量
中国 A 1
美国 A 2
中国 B 3
美国 B 4
中国 C 5
美国 C 6

怎么写 相关SQl使结果集如下
国家 A的总数量 B的总数量 C的总数量
中国
美国

select 国家,A的总数量=sum(case 物品类型 when A then 数量),B的总数量=sum(case 物品类型 when B then 数量),C的总数量=sum(case 物品类型 when C then 数量) from 表A
group by 国家

象这种情况,直接用SQL存储过程比较麻烦,最好还是结合报表工具中的交叉报表方法比较方便,看下面示例:

假设有张学生成绩表(CJ)如下

[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60

想变成
[姓名] [语文] [数学] [物理]
张三 80 90 85
李四 85 92 82
王五 null 60 null

declare @sql varchar(4000)
set @sql = 'select 姓名'
select @sql = @sql + ',sum(case 学科 when '''+学科+''' then 成绩 end) as '+学科
from (select distinct 学科 from CJ) as a
set @sql = @sql+' from cj group by 姓名'
exec(@sql)

select 国家,
sum(case 物品类型 when 'A' then 数量 else 0 end) as A的总数量,
sum(case 物品类型 when 'B' then 数量 else 0 end) as B的总数量,
sum(case 物品类型 when 'C' then 数量 else 0 end) as C的总数量
from 表A
group