Sql server 比较SQL Server中的上一列值
有一个具有以下结构的表: ID XID RChange 1 1 1 2 2 1 3 3 1 4 1 0 5 2 0 6 3 1 ID XID RChange 1 1 1 2 2 1 3 3 1 4 1 0 5 2 0 6 3 1 ID列是一个标识列 XID列将有一些值重复 RChange将具有1或0 我需要表中那些RChange列值从1变为0且具有相同XID的行 i、 e.在上表中,对于XID 1和2,RChange值已从1更改为0,但对于XID 3,它已从1更改为1 因此,我需要编写一个查询来检索 ID XID RChange 4 1 0 5 2 0 ID XID RChange 4 1 0 5 2 0Sql server 比较SQL Server中的上一列值,sql-server,sql-server-2008,Sql Server,Sql Server 2008,有一个具有以下结构的表: ID XID RChange 1 1 1 2 2 1 3 3 1 4 1 0 5 2 0 6 3 1 ID XID RChange 1 1 1 2 2 1 3 3 1 4 1 0 5 2 0 6 3 1 ID列是一个标识列 XID列将有一些值重复 RChange将具有1或0 我需要表中那些RCha
因此,请帮助我了解您的想法。您没有包含时间戳,因此我假设
ID
列将确定顺序
;WITH byXID AS
(
SELECT ID, XID, RChange, ROW_NUMBER() OVER(PARTITION BY XID ORDER BY ID) rn
FROM Table1
)
SELECT t1.ID, t1.XID, t1.RChange
FROM byXID t1
INNER JOIN byXID t0 ON t1.XID = t0.XID AND t0.rn = t1.rn - 1
WHERE t1.RChange = 0 AND t0.RChange = 1
这是另一种方法:
SELECT t2.ID, t2.XID, t2.RChange
FROM Table1 t1 JOIN Table1 t2
ON t1.XID = t2.XID
WHERE t1.RChange = 1 AND t2.RChange = 0
(感谢@Ic.拨弄小提琴)