我想提取ID更改值的所有记录。例如,我想编写一个查询来拉取ID 1,其中Date和Value会发生变化。我还想从这个数据集中提取旧记录和新记录:
Date ID Value
1/1/2015 1 5
2/2/2016 2 1
3/3/2017 1 7
4/4/2017 3 4
5/1/2017 2 1
5/6/2017 1 8
期望的结果:
Date ID Value
1/1/2015 1 5
3/3/2017 1 7
5/6/2017 1 8
正如下面所指出的,我必须提取超过200,000个唯一ID,因此ID = 1将无效。
答案 0 :(得分:1)
这里(在子查询中),我们只选择id(其中)min(Value)不等于max(value)。然后是一个简单的连接来显示细节。
示例强>
Declare @YourTable Table ([Date] varchar(50),[ID] int,[Value] int)
Insert Into @YourTable Values
('1/1/2015',1,5)
,('2/2/2016',2,1)
,('3/3/2017',1,7)
,('4/4/2017',3,4)
,('5/1/2017',2,1)
,('5/6/2017',1,8)
Select A.*
From @YourTable A
Join (
Select ID
From @YourTable
Group By ID
Having min(Value)<>max(Value)
) B on A.ID=B.ID
<强>返回强>
Date ID Value
1/1/2015 1 5
3/3/2017 1 7
5/6/2017 1 8
答案 1 :(得分:0)
您可以使用触发器捕获插入,更新和删除的记录。使用Select * from deleted
查找已删除的记录,使用Select * from Inserted
查找已插入的记录。有关详细信息,请参阅https://docs.microsoft.com/en-us/sql/relational-databases/triggers/use-the-inserted-and-deleted-tables。