求一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)
[解决办法]
select a.tablecode,a.taomoney+sum(b.[money]) as summoneyfrom 表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