SQL Server : select where row was X but is not now X

标签 sql sql-server

我有一个这样的表:

WOTranID   WOID   Status      DateCreated
----------------------------------------------
1          5      Ready        6/6/2015
2          5      Pending      6/5/2015
3          7      Pending      6/9/2015
4          8      Scheduled    6/10/2015

我需要的是选择状态为待处理但当前不是待处理的所有 WOID。

感谢您的帮助。

编辑:使用上面的示例表,我只想返回 WOID 5。

最佳答案

首先,选择所有状态为待处理的 WOID,然后将其与当前状态非待处理的 WOID 列表相交(使用 row_number() 选择每个 WOID 的最新状态) 。

(Select Distinct WOID
from MyTable
where Status = 'Pending')

intersect 

(Select WOID
from
  (Select WOID
    , Status
    , Row_number() over (partition by WOID order by DateCreated desc) as RN
  from MyTable) a
where Status <> 'Pending' and RN = 1)

关于SQL Server : select where row was X but is not now X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898812/

相关文章:

mysql - SQL:比较 MySQL 中的版本字符串 (W.X.Y.Z)

sql - 测试 MySQL 表中是否存在行的最佳方法

sql - 防止 MS-SQL 表中的循环引用

sql-server - 我可以在没有系统管理员的情况下连接到 SSMS 上的本地主机吗?

mysql - 在 SQL 连接语句中添加 case 语句

mysql - 我如何编写这个涉及连接的简单 sql 语句?

sql - 将序列链接到hsqldb中的标识

sql - 查询不进行索引查找或扫描

将 varchar 值转换为数据类型 int 时,SQL Select Case Conversion 失败。

sql - 返回具有重复数据的行的 id