[英]Find date for last four sundays
即我需要的是:
这里的关键是它每周都会更改日期,从上周日到上周日的第二个,依此类推,因此它是动态的。
如果有人可以提供帮助,将不胜感激。
CASE
WHEN f.[STARTDATE] = last week Sunday (03/06) THEN '1 week ago'
WHEN f.[STARTDATE] = last 2 week Sunday (02/27) THEN '2 weeks ago'
WHEN f.[STARTDATE] = last 3 week Sunday (02/20) THEN '3 week ago'
WHEN f.[STARTDATE] = last 4 week Sunday (02/13) THEN '4 week ago'
END AS 'STARTDATE'
谢谢
首先,您需要获得最近的星期日,然后才能从中减去 7、14、21 和 28 天。 最简单的方法是检查当前星期几并计算偏移量:星期日为 0,星期一为 1,依此类推:
with cte as (
select offsett = case datename(weekday, cast(current_timestamp as date))
when 'sunday' then 0
when 'monday' then 1
when 'tuesday' then 2
when 'wednesday' then 3
when 'thursday' then 4
when 'friday' then 5
when 'saturday' then 6
end
)
select case
when f.[startdate] = dateadd(day, -cte.offsett - 7, cast(current_timestamp as date)) then '1 week ago'
when f.[startdate] = dateadd(day, -cte.offsett - 14, cast(current_timestamp as date)) then '2 week ago'
when f.[startdate] = dateadd(day, -cte.offsett - 21, cast(current_timestamp as date)) then '1 week ago'
when f.[startdate] = dateadd(day, -cte.offsett - 28, cast(current_timestamp as date)) then '2 week ago'
end
from f
cross join cte
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.