我正在尝试编写一个sql来计算我们公司的“绩效日期”。
为了获得一种感觉,我从sql中编写了一个摘录:
..CASE
WHEN EXTRACT(weekday FROM deliverydate) = 1 THEN (bek.deliverydate-3)
WHEN EXTRACT(weekday FROM deliverydate) = 2 THEN (bek.deliverydate-3)
ELSE
bek.deliverydate-2
END AS performancedate
这很管用(周末使演出多了一天,因为交付需要多了一天)
我下一步尝试的是实施“公共假日”,即“绩效日期”每公共假日多移动一天。
我的英语不是很好,所以我希望你能理解这一点。
我把所有的公共假期都安排好了:
'01.01.2020'
'10.04.2020'
'13.04.2020'
'01.05.2020'
'21.05.2020'
'01.06.2020'
'11.06.2020'
'03.10.2020'
'01.11.2020'
'25.12.2020'
'26.12.2020'
'01.01.2021'
'02.04.2021'
'05.04.2021'
'01.05.2021'
'13.05.2021'
'24.05.2021'
'03.06.2021'
'03.10.2021'
'01.11.2021'
'25.12.2021'
'26.12.2021'
'01.01.2022'
'15.04.2022'
'18.04.2022'
'01.05.2022'
'26.05.2022'
'06.06.2022'
'16.06.2022'
'03.10.2022'
'01.11.2022'
'25.12.2022'
'26.12.2022'
在接下来的2年里。
现在我希望当一个假日介于“deliverydate”和“performance date”之间时,新的performancedate(例如,新变量不需要是同一个变量)会在该期间内的每个假日再移动一天。
我希望有这样的解决办法 ..when '18.07.2020' between performancedate and deliverydate then '1' else '0'"
然后就可以使用 Sum(newvariable)
结合 group by
并将其添加到以前的演出日期。这只是一个可能的解决办法。
(附言:我对sql程序的功能非常有限,因为它只是我们商品管理中的一个sql菜单。 select
等工程……)
1条答案
按热度按时间nnt7mjpx1#
你的问题很难理解。基于标题:
数一数中间有多少个日期
如果需要两个日期之间的公共假日数,则一个选项是相关子查询:
不过,我怀疑,你想在未来某个时候计算一个日期,把假期考虑进去。如果是这样的话,我建议你提出一个新问题,提供样本数据,期望的结果,并试图对你想要完成的事情有一个更清晰的解释。