感觉好难的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条就抵消了,把剩下的没被抵消的输出。
...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,593

社区成员

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

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