首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急一个SQL语句,该怎么处理

2012-01-23 
急:一个SQL语句假设有以下两个表:createtable#sl_1(KindCodevarchar(10),KindCodeNamevarchar(10),Totalmo

急:一个SQL语句
假设有以下两个表:
create   table   #sl_1(KindCode   varchar(10),KindCodeName   varchar(10),Total   money)
insert   #sl_1   values( '001 ', '工业 ',100)
insert   #sl_1   values( '008 ', '商业 ',20)
insert   #sl_1   values( '009 ', '生活 ',30)

create   table   #sl_2(KindCode   varchar(10),KindCodeName   varchar(10),Total   int)
insert   #sl_2   values( '001 ', '工业 ',-10)
insert   #sl_2   values( '008 ', '商业 ',-50)


___________________________________________
我想要的结果如下   :
 
要求:语句越简练越好   执行速度越快越好,因为我要用这个语句检索很多数据,语句中不要带   in   或者not   in   或者   exists关键字
KindCode       KindCodeName     Total
  001                     工业                   90         (注释:100+(-10)=90)
  008                     商业                   -30
  009                     生活                   30


[解决办法]

select tb.KindCode,tb.KindCodeName,sum(Total) as Total
from
(select KindCode,KindCodeName,Total from #sl_1
union all
select KindCode,KindCodeName,Total from #sl_2
) tb
group by tb.KindCode,tb.KindCodeName

[解决办法]
select KindCode,KindCodeName,Total=sum(Total)
from
(
select * from #sl_1
union all
select * from #sl_2
)as tmp group by KindCode,KindCodeName
[解决办法]
以上两种都是正确的。
如果两个表里的数据不存在重复:
select KindCode,KindCodeName,Total=t.Total+v.Total
from #sl_1 t left join #sl_2 v on t.KindCode=v.KindCode

纯属蹭分.
[解决办法]
select KindCode=isnull(a.KindCode,b.KindCode),KindCodeName=isnull(a.KindCodeName,b.KindCodeName),
Total=isnull(a.Total,0)+isnull(b.Total,0) from #sl_1 a full outer join #sl_2 b
on a.KindCode=b.KindCode

[解决办法]
上面的只满足KindCode不重复的情况

热点排行