日期:2014-05-18  浏览次数:20490 次

求一Sql语句,有关Case When的
表1
tablecode taomoney
001 200
002 300
表2
tablecode status money
001 正常 100
001 正常 200
001 套餐 600
001 套餐 500

002 正常 500
002 正常 100
002 套餐 300
002 套餐 200
002 套餐 600

我的要求是写一个Sql语句 完成 
当StatuS为正常时 对Money求和
当StatuS为套餐时 不管对应的有多少行,其求和值 为Taomoney

出现 
tablecode summoney
001 500 (100+200+200)
002 900 (500+100+300)

------解决方案--------------------
SQL code
select 
    a.tablecode,a.taomoney+sum(b.[money]) as summoney
from 
    表1 a,表2 b 
where 
    a.tablecode=b.tablecode and b.status='正常' 
group by 
    a.tablecode,a.taomoney 
order by
    a.tablecode

------解决方案--------------------
select tablecode,sum(taomoney) as taomoney
from 
(
select tablecode,taomoney 
from 表1
union all
select tablecode,money
from 表2
where status='正常'
) T
group by tablecode