当前位置: 代码迷 >> Sql Server >> SQL语句,多谢大家了。解决有关问题就揭贴
  详细解决方案

SQL语句,多谢大家了。解决有关问题就揭贴

热度:52   发布时间:2016-04-27 21:05:50.0
求一个SQL语句,谢谢大家了。解决问题就揭贴。
表结构如下:
goodsname       goodscount       goodstype        
----------   -----------   -----------  
book                   23                           0
book                   1                             1
book1                 100                         0
book1                 10                           1
 
目的:用货物类型为0的数量   -   货物类型为1的数量
预期结果:
goodsname       goodscount    
----------   -----------  
book                   22                          
book1                 90    

谢谢大家了。解决问题就揭贴。

------解决方案--------------------

create table #T(goodsname varchar(100), goodscount int, goodstype int)

insert into #t


select 'book ',23, 0 union all
select 'book ',1, 1 union all
select 'book1 ',100,0 union all
select 'book1 ',10, 1


select goodsname,sum(case when goodstype=1 then goodscount*-1 else goodscount end) as goodscount
from #t
group by goodsname

drop table #t


------解决方案--------------------
goodsname goodscount goodstype
---------- ----------- -----------
book 23 0
book 1 1
book1 100 0
book1 10 1

select isnull(m.goodsname,n.goodsname) goodsname , isnull(m.goodscount,0) - isnull(n.goodscount goodscount,0) from
(select goodsname,sum(goodscount) goodscount from tb where goodstype = 0 group by goodsname) m
full join
(select goodsname,sum(goodscount) goodscount from tb where goodstype = 1 group by goodsname) n
on m.goodsname = n.goodsname


------解决方案--------------------

create table temptb
(
goodsname varchar(10),
goodscount int,
goodstype int
)

insert into temptb select 'book ',23, 0
union all select 'book ',1,1
union all select 'book1 ',100,0
union all select 'book1 ',10,1


select goodsname,sum(case when goodstype=1 then -goodscount end)+sum(case when goodstype=0 then goodscount end ) goodscount from temptb group by goodsname
  相关解决方案