sum求和时怎样去重复值?

xBoady xBoady 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
SELECT SUM(DISTINCT CASE WHEN BG_BG_Type =2 THEN ISNULL(b.BG_Freight,0.00)-ISNULL(a.BG_Freight,0.00) WHEN BG_BG_Type=3 THEN ISNULL(BG_DCharge,0.00) ELSE 0 END) FROM BA_Bargain a LEFT JOIN BG_Bargain b ON a.BGID=b.BGID AND a.BG_OP_Time>='2010-09-26' AND a.BG_OP_Time<'2010-10-26' AND b.BG_TNode='100625' AND (BG_BG_Type=2 or BG_BG_Type=3)
现在执行的效果是:((10+30+40)-(15+30+40))+((20+6+1)-(5+6+1))
我想要原始运费为第一次的,原始送货费为第二次的,也就是说原始运费是第一次修改的,送货费是最后一次修改的记录。。。?DISTINCT是不是只能去第一次的。。。

BA_Bargain(变更原始表)
BGID , BG_Freight (变更前的运费) ,BG_DCharge(原始送货费), BG_OP_Time
001 , 10 ,20,2010-09-26 01:00:00 (第一次)
001 , 11 ,10,2010-09-26 01:59:59 ( 第二次,然而没有变化)
002 , 30 ,6,2010-09-26 02:33:00
003 , 40 ,1,2010-09-26 03:00:00
BG_Bargain(变更后表)
BGID , BG_Freight(变更后的运费),BG_DCharge
001 , 15,5
002 , 30,6
003 , 40,1
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
xBoady
疑难问题 22,298 成员 121,727 内容