Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 比较SQL Server中的上一列值_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 比较SQL Server中的上一列值

Sql 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 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 0
因此,请帮助我了解您的想法。

您没有包含时间戳,因此我假设
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.拨弄小提琴)