SQL按组查找最新记录

缺口

我的工作流程应用程序有一个批准历史记录表,其中包含以下结构以及一些垃圾数据:


表格:[批准] 
+ -------------------------------------- + ----- -+ ---------------- + ------------------------- + 
| ID |状态| 用户名| 日期戳| 
+ -------------------------------------- + ------- +- -------------- + ------------------------- + 
| 63DDD358-EF3B-4355-8251-00CDE8560B3E | 5 |用户1 | 2014-12-09 11:53:40.423 | 
| 63DDD358-EF3B-4355-8251-00CDE8560B3E | 10 |用户1 | 2014-12-09 11:53:40.423 | 
| 13F65DDC-73D8-48BB-87F4-0207DE47A6D9 | 5 |用户2 | 2016-02-19 11:10:56.820 | 
| 13F65DDC-73D8-48BB-87F4-0207DE47A6D9 | 10 |用户3 | 2016-02-19 11:10:56.820 |
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 5 |用户1 | 2014-09-18 14:53:07.973 |
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 20 | User3 | 2014-09-18 14:56:07.177 | 
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 60 |用户1 | 2014-09-18 14:53:07.973 | 
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 70 |用户1 | 2014-09-18 14:56:08.177 | 
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 70 |用户1 | 2014-10-15 15:17:49.210 | 
| 5AB3C39E-8E2E-4935-BC6C-0226F444D7F2 | 90 | 系统| 2014-10-15 15:17:50.210 | 
+ -------------------------------------- + ------- +- -------------- + ------------------------- +

状态代码全部表示批准级别,已完成90,已取消99。

我需要在对数据进行分组时找到最上面的行,以查找尚未完成或取消的正在等待批准的请求。然后,这将用于发送电子邮件,提醒用户尚未批准

到目前为止,我有这个查询:


SELECT a.ID,a.Status,a.ApproverID,A.DateTime FROM批准内部
联接
    SELECT MAX(DateTime)作为MaxDate,Status from Approval 
    WHERE状态不在(90,99)
    GROUP BY状态中
    )a1在a1上。 MaxDate = a.DateTime和a1.Status = a.Status

这会将数据分组,并为我提供最新记录,但它不会忽略任何已完成或已取消的内容。

谁能发现我要去哪里错了?

松鼠
SELECT *
FROM
(
SELECT a.ID,a.Status,a.ApproverID,A.DateTime, 
       RN = ROW_NUMBER() OVER (PARTITION BY a.ID ORDER BY A.DateTime DESC)
FROM   Approval a
WHERE  NOT EXISTS
       (
           SELECT *
           FROM   Approval x
           WHERE  x.ID = a.ID
           AND    x.Status in (90, 99)
       )
) A
WHERE A.RN = 1

RN = 1将为您提供ID的最新记录

NOT EXISTS()将排除状态为90或99的ID

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找基于组猫鼬的最新记录

来自分类Dev

通过SQL获取每个组的最新记录

来自分类Dev

每个项目mongodb组的按日期最新记录

来自分类Dev

Oracle SQL:如何从组中查找记录

来自分类Dev

按日期查找每个不同列值的最新记录

来自分类Dev

SQL-按每个记录的最新日期选择记录

来自分类Dev

SQL从一组数据中获取最新记录

来自分类Dev

SQL从一组数据中获取最新记录

来自分类Dev

按组保留 N 个最新记录,同时删除其他记录

来自分类Dev

SQL连接3个表,按最新组值分组

来自分类Dev

SQL联接3个表,按最新组值分组

来自分类Dev

JPQL / SQL获取按列分组的最新记录

来自分类Dev

基于 ID 查找最新记录的 SQL 代码帮助

来自分类Dev

检索组中的最新记录

来自分类Dev

Hive SQL:如何按最大时间对记录组进行子集

来自分类Dev

SQL Server 2008:选择一个记录,按组

来自分类Dev

Oracle sql查询以按几列获取记录组

来自分类Dev

按结果查找组中的元素使用 SQL

来自分类Dev

查找组中的最新行

来自分类Dev

获取记录组中的最新记录

来自分类Dev

如何按两个字段查找最新文档组

来自分类Dev

查找最新的不同记录并在Postgresql中按created_at排序

来自分类Dev

SQL选择最新记录

来自分类Dev

组顺序SQL记录

来自分类Dev

组顺序SQL记录

来自分类Dev

如何使用SQl语法从MySQL表中的组中选择最新记录

来自分类Dev

Django ORM-获取组的最新记录

来自分类Dev

组行数除最新记录外

来自分类Dev

Django ORM-获取组的最新记录