gpt4 book ai didi

SQL:如何选择最新版本的项目

转载 作者:行者123 更新时间:2023-12-02 01:29:58 26 4
gpt4 key购买 nike

在我们的系统中,项目根据可用时间获得不同的版本。例如。项目“工具 1”的版本可用于以下日期:

  • 版本 1:2015 年 1 月 1 日 - 2015 年 12 月 31 日
  • 版本 2:2016 年 1 月 1 日 - 2016 年 1 月 31 日
  • 版本 3:2016 年 2 月 1 日 - 2016 年 2 月 29 日
  • 版本 4:2016 年 3 月 1 日 - 直至另行通知

因此,我在数据库中的“工具”表是

ItemCode   |    ParentCode   |    EffectiveFrom    
1 | 1 | 01.01.2015
2 | 1 | 01.01.2016
3 | 1 | 01.02.2016
4 | 1 | 01.01.2016

现在,Mgmt 想知道哪些商品正在销售中,哪些商品即将上市。 ParentCode 是指项目的第一个版本。

因此,他们需要 ItemCodes 2(目前正在出售)和 3,4(即将推出)。找不到 SELECT 获取这些的方法。

使用“Microsoft SQL Server Management Studio 2012”。

感谢您的帮助。

问候

最佳答案

我认为这只是当前日期的比较以及关于下一个日期的信息。

最好将结束日期直接放在表中,但在 SQL Server 2012+ 中可以使用 lead() 轻松计算:

select t.*,
(case when effectivefrom >= getdate() then 'Coming Soon'
else 'Currently Sold'
end) as timingStatus
from (select t.*,
lead(effectivefrom) over (partition by parentcode order by effectivefrom) as next_effectivefrom
from tools t
) t
where next_effectivefrom is null or next_effectivefrom >= getdate();

注意:这使用了具有时间分量的 getdate()。你的约会对象可能没有。因此,我认为以下内容稍微更准确一些:

select t.*,
(case when effectivefrom > cast(getdate() as date) then 'Coming Soon'
else 'Currently Sold'
end) as timingStatus
from (select t.*,
lead(effectivefrom) over (partition by parentcode order by effectivefrom) as next_effectivefrom
from tools t
) t
where next_effectivefrom is null or
next_effectivefrom > cast(getdate() as date);

关于SQL:如何选择最新版本的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34879389/

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