有如下表TB
序号 地区 门店 车型 数量 标志
1 天河 第一 奔驰 29 in
2 天河 第一 宝马 22 in
3 天河 第二 奥迪 28 in
4 天河 第二 奥迪 9 out
5 天河 第一 宝马 6 out
6 黄埔 第三 宝马 6 out
7 黄埔 第三 宝马 43 in
8 黄埔 第三 宝马 6 out
... 要得到如下显示的结果,请问该如何写select语句地区 门店 车型 总数量
天河 第一 奔驰 29
天河 第一 宝马 16
天河 第二 奥迪 19
黄埔 第三 宝马 31
...
说明:如果标志为in,则为入库,应该加数;如果标志为out,则为出库,应该减数。请高人指教!!!(尽量使用一条语句)
序号 地区 门店 车型 数量 标志
1 天河 第一 奔驰 29 in
2 天河 第一 宝马 22 in
3 天河 第二 奥迪 28 in
4 天河 第二 奥迪 9 out
5 天河 第一 宝马 6 out
6 黄埔 第三 宝马 6 out
7 黄埔 第三 宝马 43 in
8 黄埔 第三 宝马 6 out
... 要得到如下显示的结果,请问该如何写select语句地区 门店 车型 总数量
天河 第一 奔驰 29
天河 第一 宝马 16
天河 第二 奥迪 19
黄埔 第三 宝马 31
...
说明:如果标志为in,则为入库,应该加数;如果标志为out,则为出库,应该减数。请高人指教!!!(尽量使用一条语句)
序号 地区 门店 车型 数量 标志
1 天河 第一 奔驰 29 in
2 天河 第一 宝马 22 in
3 天河 第二 奥迪 28 in
4 天河 第二 奥迪 9 out
5 天河 第一 宝马 6 out
6 黄埔 第三 宝马 6 out
7 黄埔 第三 宝马 43 in
8 黄埔 第三 宝马 6 out
... 要得到如下显示的结果,请问该如何写select语句 地区 门店 车型 总数量
天河 第一 奔驰 29
天河 第一 宝马 16
天河 第二 奥迪 19
黄埔 第三 宝马 31
...
说明:如果标志为in,则为入库,应该加数;如果标志为out,则为出库,应该减数。 请高人指教!!!(尽量使用一条语句)
c varchar(20) ,d int,e varchar(3))
insert into #Test(a,b,c,d,e)
select 'aa','one','bc',29,'in' union all
select 'aa','one','bm',22,'in' union all
select 'aa','two','ad',28,'in' union all
select 'aa','two','ad',9,'out' union all
select 'aa','one','bm',6,'out' union all
select 'bb','three','ba',6,'out' union all
select 'bb','three','ba',43,'in' union all
select 'bb','three','ba',6,'out'
select a,b,c,sum(case when e='in' then d else -d end) from #test group by a,b,c
(
序号 int identity(1,1),
地区 varchar(10),
门店 varchar(10),
车型 varchar(10),
数量 tinyint ,
标志 varchar(10)
)
insert into tb(地区,门店,车型,数量,标志)
select '天河','第一','奔驰',29,'in'
union all
select '天河','第一','宝马',22,'in'
union all
select '天河','第二','奥迪',28,'in'
union all
select '天河','第二','奥迪',9,'out'
union all
select '天河','第一','宝马',6,'out'
union all
select '黄埔','第三','宝马',6,'out'
union all
select '黄埔','第三','宝马',43,'in'
union all
select '黄埔','第三','宝马',6,'out'
select 地区,门店,车型,sum(case 标志 when 'in' then 数量 else 0-数量 end ) as 总数量 from tb group by 地区,门店,车型
查询结果:
地区 门店 车型 总数量
---------- ---------- ---------- -----------
黄埔 第三 宝马 31
天河 第二 奥迪 19
天河 第一 宝马 16
天河 第一 奔驰 29(所影响的行数为 4 行)