日期:2014-05-19  浏览次数:20397 次

SQL问题(按类别查询,统计数据,有加有减)-Access数据库
求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 。