我有下表
ABC Date
200 2019-02-22
-200 2019-02-23
1200 2019-02-24
-500 2019-02-25
'
'
'
'
-889 2015-01-11
我需要在每个月的最后一周的每一天从ABC获取值
select ABC
from table 1
where date between '2019-03-26' and '2019-03-30'
这是2019年3月的月份。我如何创建一个循环,使其在3年内每月的最后一周的每一天都显示价值
答案 0 :(得分:0)
SELECT ABC, DATE FROM table_1 WHERE DATEPART(wk, DATE) =
DATEPART(wk, EOMONTH(DATE)) AND DATE <= DATEADD(year,3,GETDATE())
DATEPART(wk,DATE)给我那个日期的星期数,DATEPART(wk,EOMONTH(DATE))给我那星期的日期(相应日期月份的最后一天)。因此,当我选中此选项时,我只会选择属于每个月最后一周的日期。下一个过滤器是仅选择从现在起小于3年的那些日期(GETDATE())。
答案 1 :(得分:0)
您可以使用日期算术来获取每月的最后一周。在Terdata中,我认为这是一种解决方案:
select abc
from table1
where (date >= (current_date - extract(day from date) * interval '1 day') - interval '6 day' and
date <= current_date - extract(day from date) * interval '1 day'
) or
(date >= (current_date - extract(day from date) * interval '1 day') - interval '1 month' - interval '6 day' and
date <= current_date - extract(day from date) * interval '1 day' - interval '1 month'
) or
(date >= (current_date - extract(day from date) * interval '1 day') - interval '2 month' - interval '6 day' and
date <= current_date - extract(day from date) * interval '1 day' - interval '12month'
);