不同表中的字段相加?

QiQi_yun 2008-09-18 11:19:39

select a.BlockID as '卡号',
sum(a.SavingTotal)as '期初累计充值',
sum(c.PayMoney) as '本次充值',
sum (a.SavingTotal+c.PayMoney) as '充值合计',
sum(case when datediff(day,b.ConsumeDate,getdate())=0 then
sum(a.AlreadlyConsume)as '累计消费金额',
sum(a.[Money]) as '卡内余额'
from tb_ConsumeCar as a
,tb_ClientConsume as b
,tb_MemberConsumptionList as c
where a.BlockID=b.BlockID
and b.LinkCode = c.LinkCode
and c.ConsumeType=2
group by a.BlockID

注意

sum (a.SavingTotal+c.PayMoney) as '充值合计',

这样可以吧?如果可以,相减也是一个道理可行吧?
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiamingwudi 2008-09-18
  • 打赏
  • 举报
回复
又学了一手,帮顶
zhangyh_136 2008-09-18
  • 打赏
  • 举报
回复
select a.BlockID as '卡号',
sum(a.SavingTotal)as '期初累计充值',
sum(c.PayMoney) as '本次充值',
sum (a.SavingTotal+c.PayMoney) as '充值合计',
sum(case when datediff(day,b.ConsumeDate,getdate())=0 then
sum(a.AlreadlyConsume)as '累计消费金额',
sum(a.[Money]) as '卡内余额'
from tb_ConsumeCar as a
,tb_ClientConsume as b
,tb_MemberConsumptionList as c
where a.BlockID=b.BlockID
and b.LinkCode = c.LinkCode
and c.ConsumeType=2
group by a.BlockID

不判断空值???
tcxx2008 2008-09-18
  • 打赏
  • 举报
回复
关注了关注了
hyde100 2008-09-18
  • 打赏
  • 举报
回复
因为是连接过来的,所以可以的,最好有ISNULL判断,要不然会warning
昵称被占用了 2008-09-18
  • 打赏
  • 举报
回复
sum (a.SavingTotal+c.PayMoney) as '充值合计',

在某些情况下容易有错,而且不容易发现,就是在a.SavingTotal和c.PayMoney一个或者两个可空得情况下或者外连接的情况下,最好写成
sum (a.SavingTotal)+sum(c.PayMoney) as '充值合计',
自动把null解释成0
hyqwan11112 2008-09-18
  • 打赏
  • 举报
回复
没问题,这两个字段如果有可空的,加个isnull
QiQi_yun 2008-09-18
  • 打赏
  • 举报
回复
哦,我还担心不行呢!谢谢!!
wgzaaa 2008-09-18
  • 打赏
  • 举报
回复
注意空值的影响
不如改为 sum(a.SavingTotal)+sum(c.PayMoney)
wgzaaa 2008-09-18
  • 打赏
  • 举报
回复
可行
ygf6754 2008-09-18
  • 打赏
  • 举报
回复
不错
wgzaaa 2008-09-18
  • 打赏
  • 举报
回复
可以

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧