编辑:我正在使用SQL Server(托管示例)
在我的表中,我尝试:设置PrevMktOpenDate = CalendarDate,其中MarketOpen是最后一个1。我希望这在我下面的示例摘录中得到更好的说明。
表格:
市场日历
色谱柱:
天数(整数)
日历日期(日期)
市场开放(位)
上一个市场开放日期(日期)
当前:
364 2022-12-30 1 2022-12-29
365 2022-12-31 0 2022-12-30
1 2023-01-01 0 2022-12-31
2 2023-01-02 0 2023-01-01
3 2023-01-03 1 2022-12-02
4 2023-01-04 1 2023-01-03
请求:
364 2022-12-30 1 2022-12-29
365 2022-12-31 0 2022-12-30
1 2023-01-01 0 2022-12-30
2 2023-01-02 0 2023-01-30
3 2023-01-03 1 2022-12-30
4 2023-01-04 1 2023-01-03
我试过写一个按日期排序的排名函数,但无法让它按预期工作。
2条答案
按热度按时间hfyxw5xn1#
大概是这样的(给了3个alt):
2w3rbyxf2#
假设您使用的是Azure SQL数据库,则可以使用窗口函数
LAST_VALUE
,其中包含CASE
表达式和IGNORE NULLS
:db<>fiddle