感觉好难的SQL题,求助……

sllwd3 2014-09-03 07:55:30
已知表如下格式:
零件号 数量 总数量
a 1 2
a -1 -2
a 2 5
b 2 2
b 3 6
b -3 -6
b 3 6
输出如下格式:
零件号 数量 总数量
a 2 5
b 2 2
b 3 6
就是如果一条零件号的数量和总数量和同一零件号的数量和总数相反,这2条就抵消了,把剩下的没被抵消的输出。
...全文
81 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiaodongni 2014-09-03
--先把小于0的行取出来 取绝对值。 然后进行EXCEPT 进行抵销操作。 因为你这个要进行EXCEPT DISTINCT 操作。所有用了个ROW_NUMBER 进行修改了下 select 零件号,数量 ,总数量 from (select *,row_number () over(partition by 零件号,数量,总数量 order by (select 2)) as n from tablename where 数量>0) except (select 零件号,abs( 数量) as 数量,abs(总数量) as 总数量, row_number() over(partition by 零件号,数量,总数量 order by (select 2) ) as n from tabelname where 数量<0) as p
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2014-09-03 07:55
社区公告
暂无公告