怎么取相邻行部门相同的情况,取最大一行的记录

yanele 2020-12-02 09:31:44
有这样一组数据,这只是其中一个单号的
单号 工序 部门编号 完成数量
2011090065 0010 222 1500
2011090065 0020 223 1497
2011090065 0030 223 1497

2011090065 0040 213 1497
2011090065 0050 224 1497
2011090065 0060 224 1497

2011090065 0070 220 1496
2011090065 0080 220 1496
2011090065 0090 224 0

请教各位大神:按单号+工序排序,相邻行部门相同的情况,取工序号最大的那一行记录?
单号 工序 部门编号 完成数量
2011090065 0010 222 1500
2011090065 0030 223 1497
2011090065 0040 213 1497
2011090065 0060 224 1497
2011090065 0080 220 1496
2011090065 0090 224 0
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2020-12-02
  • 打赏
  • 举报
回复

DECLARE @data TABLE(单号 VARCHAR(20) NOT NULL, 工序 VARCHAR(10) NOT NULL, 
部门编号 INT NOT NULL,   完成数量 INT NOT NULL)
INSERT @data (单号, 工序, 部门编号, 完成数量)
VALUES
('2011090065','0010',222,1500),
('2011090065','0020',223,1497),
('2011090065','0030',223,1497),
('2011090065','0040',213,1497),
('2011090065','0050',224,1497),
('2011090065','0060',224,1497),
('2011090065','0070',220,1496),
('2011090065','0080',220,1496),
('2011090065','0090',224,0	 )

;WITH 
list AS (
SELECT *,LEAD(部门编号,1,NULL) OVER (PARTITION BY 单号 ORDER BY 工序) NextDept FROM @data )
SELECT * FROM list WHERE list.部门编号<> list.NextDept OR list.NextDept IS NULL
shoppo0505 2020-12-02
  • 打赏
  • 举报
回复
group by 单号,部门编号吧
chenghangstar 2020-12-02
  • 打赏
  • 举报
回复
SELECT [单号],[部门序号],MAX(工序),MAX(完成数量) FROM TABLE GOUP BY [单号],[部门序号]
,不过有点问题的是,[工序]字段不是数值类型

34,588

社区成员

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

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