求SQL语句;不知道可不可以写出来;
姓名 类型 统计数量
A 1 10
A 2 5
B 1 10
B 2 5
要求求出
姓名 统计数量
A 5
B 5
其中按姓名进行统计的,但是同时还需要按类型区分加减,如果类型为1,则累加,如果类型为2,则需要减去;
用的Access数据库;
------解决方案--------------------
select 姓名,sum(case 类型 when 1 then 统计数量 else -统计数量 end) from 表 group by 姓名
------解决方案--------------------
create table #temp
(姓名 varchar(10),
类型 int,
统计数量 int
)
insert into #temp
select 'A ', '1 ', '10 ' union all
select 'A ', '2 ', '5 ' union all
select 'B ', '1 ', '10 ' union all
select 'B ', '2 ', '5 '
select * from #temp
select 姓名,sum(case 类型 when 1 then 统计数量 when 2 then -统计数量 else 0 end) as 统计数量
from #temp
group by 姓名
-------------
姓名 统计数量
A 5
B 5
------解决方案--------------------
呵呵,我还是晚了一步~:)
------解决方案--------------------
上面是在SQL Server 2000里的语法,以下SQL语句适用于Access:
SELECT [姓名],sum(iif([类型]=1,统计数量,-统计数量)) FROM T1 group by [姓名]
------解决方案--------------------
学习~
------解决方案--------------------
Access支持iif函数,以上语句测试环境为 Access 2000 SP3 。