gpt4 book ai didi

sql - 本年迄今、去年迄今为止和其他

转载 作者:行者123 更新时间:2023-12-01 03:57:11 25 4
gpt4 key购买 nike

我需要将一组日期分类为“Cur”。年初至今','Lst。 YTD”或“其他”。 YTD 基于 getdate()。我有一个用于测试的临时表,它有一个名为“calendar_date”的 DATETIME 类型的列。我想出了这个逻辑,它似乎有效。我只是想知道从性能角度来看这种方法是否有意义,或者其他方法是否可能更好。

select calendar_date,
case when (MONTH(calendar_date) < MONTH(getdate()))
or (MONTH(calendar_date) = MONTH (getdate())
AND DAY(calendar_date) <= DAY(getdate())) then
case when YEAR(calendar_date) = YEAR(GETDATE()) then 'CYTD'
when YEAR(calendar_date) = YEAR(getdate()) - 1 then 'LYTD'
else 'Other'
end
else 'Other'
end as Tim_Tag_YTD
from #temp1

最佳答案

您的逻辑看起来不错,可以按原样工作。

一种稍微简化的替代方法,它假设您没有 future 的数据。

select
calendar_date,
Tim_Tag_YTD = case DATEDIFF(YEAR, calendar_date, GETDATE())
when 0 then 'CYTD'
when 1 then 'LYTD'
else 'Other'
end
from #temp1;

就您的逻辑而言,您明确地将 future 数据放入“其他”中,您也可以这样做:
select
calendar_date,
Tim_Tag_YTD = case when calendar_date > GETDATE() then 'Other' else
case DATEDIFF(YEAR, calendar_date, GETDATE())
when 0 then 'CYTD'
when 1 then 'LYTD'
else 'Other'
end
end
from #temp1;

关于sql - 本年迄今、去年迄今为止和其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326846/

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