gpt4 book ai didi

sql - 比较每个合约的倒数第二条记录

转载 作者:行者123 更新时间:2023-12-04 06:34:03 25 4
gpt4 key购买 nike

为了简单起见,我的问题类似于 THIS QUESTION, PART 2 ,唯一的问题是,我没有运行 Oracle,因此无法使用行号。

对于那些需要更多信息和示例的人:

我有一张 table

contractId 日期值
1 09/02/2011
1 13/02/2011 C
2 2011 年 2 月 2 日
2 08/02/2011
2 12/02/2011 C
3 22/01/2011 C
3 30/01/2011 乙
3 12/02/2011 D
3 21/01/2011 A

编辑:为 ContractID 添加了另一行。由于我自己有一些代码,但这会显示以下内容:

contractId 日期值 value_old
1 09/02/2011
2 08/02/2011 AD
3 30/01/2011 B C
3 30/01/2011 B A

但那是 不是 我想要的是 !结果应该还是如下!

现在我想选择给定日期之前的最后一条记录并将其与之前的值进行比较。
假设本例中的“给定日期”是 11/02/2011 ,输出应该是这样的:

contractId 日期值 value_old
1 09/02/2011
2 08/02/2011 AD
3 30/01/2011 B C

我确实有查询来选择给定日期之前的最后一条记录。这是最容易的部分。但是要选择之前的最后一条记录,我迷路了......

我真的希望我能在这里得到一些帮助,这几天我一直在思考这个问题,并在网络和 stackoverflow 上寻找答案。

最佳答案

一种可能:

SELECT a.contractId, a.Date, a.Value, (SELECT Top 1 b.[Value] 
FROM tbl b
WHERE b.[Date] < a.[Date] And b.ContractID=a.ContractID
ORDER BY b.[Date] Desc) AS Old_Value
FROM tbl AS a
WHERE a.Date IN
(SELECT TOP 1 b.Date
FROM tbl b
WHERE b.ContractID=a.ContractID
AND b.Date < #2011/02/11#
ORDER BY b.date DESC)

关于sql - 比较每个合约的倒数第二条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com