gpt4 book ai didi

sql - 选择具有最高(相对)时间戳的所有行

转载 作者:行者123 更新时间:2023-12-04 20:56:04 28 4
gpt4 key购买 nike

我在 SQL 2000 数据库中有以下简化的表结构:

ID  AppName  Key    Value   EffectiveDate
-- ------- ----- ------- -------------
1 App1 One Past 1/1/1900
2 App1 One Present 1/1/2010
3 App1 One Future 1/1/9999
4 App1 Two Past 1/1/1900
5 App1 Two Present 1/1/2010
6 App1 Two Future 1/1/9999
7 App2 One Present 1/1/2010
8 App2 Two Present 1/1/2010

我需要能够提出问题:

给定一个特定的 AppName , 显示所有 ONLY THE MOST RECENT 键/值对 EffectiveDate <= GetDate()

所以如果我用 AppName = 'App1' 调用我的神秘查询那么我的结果将是:

ID  AppName  Key    Value   EffectiveDate
-- ------- ----- ------- -------------
2 App1 One Present 1/1/2010
5 App1 Two Present 1/1/2010

编辑:

值可以是任何东西。 ('Past','Present','Future') 只是用来使示例更清楚。他们很可能是 (45,'Bob','%$#%@#$')。

最佳答案

我认为你需要使用这样的东西:

SELECT T3.*
FROM your_table T4
JOIN
(
SELECT T2.[Key], T2.EffectiveDate, MAX(T2.ID) AS ID
FROM your_table T2
JOIN
(
SELECT [Key], MAX(EffectiveDate) AS EffectiveDate
FROM your_table
WHERE AppName = 'App1'
AND EffectiveDate <= GetDate()
GROUP BY [Key]
) T1
ON T1.[Key] = T2.[Key] AND T1.EffectiveDate = T2.EffectiveDate
WHERE T2.AppName = 'App1'
GROUP BY T2.[Key], T2.EffectiveDate
) T3
ON T3.ID = T4.ID

关于sql - 选择具有最高(相对)时间戳的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089820/

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