sum求和时怎样去重复值?

xBoady 2010-09-30 03:35:35
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
...全文
205 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ya_Pian 2010-09-30
先去重复再求和啦
回复
SQLCenter 2010-09-30
云里来雾里去
回复
xBoady 2010-09-30
想要的效果是:((10+30+40)-(15+30+40))+((10+6+1)-(5+6+1))
回复
xBoady 2010-09-30
BA_Bargain(变更原始表)
BGID,BG_OP_Time,BG_SNode,BG_TNode,BG_Freight,BG_DCharge,BG_BG_Type

BG_Bargain(变更后表)
BGID,BG_SNode,BG_TNode,BG_Freight,BG_DCharge,BG_BG_Type

具体的表结构是这样子的。。。变更原始表是最原始的数据(变更前的数据)
回复
飘零一叶 2010-09-30
乱啊对方答复
回复
百年树人 2010-09-30
请提供表结构,测试数据,算法和你想要的结果
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-30 03:35
社区公告
暂无公告