我正在寻找一个解决方案,为这个SQL的情况下,我不想考虑星期天作为一个工作日。因此,如果星期日在bkg_date和KPI之间,则不考虑它。这是我的查询;
CASE
WHEN SYSDATE - x.bkg_date - 1 <= x.dlvry_kpi THEN CONCAT(TO_CHAR(x.dlvry_kpi - (SYSDATE - x.bkg_date), 'FM00'), ' days left')
ELSE 'OKPI'
END AS AGING
字符串
它不包括星期天的条件,但是我已经尝试了这个星期天,但它仍然给一些错误;
CASE
WHEN SYSDATE - x.bkg_date <= x.dlvry_kpi THEN
CONCAT(
TO_CHAR(
x.dlvry_kpi - (
SYSDATE - x.bkg_date
+ FLOOR((SYSDATE - x.bkg_date) / 7) -- Subtracting Sundays
- CASE WHEN TO_CHAR(SYSDATE - x.bkg_date + 1, 'DD') = '1' THEN 1 ELSE 0 END -- Subtracting Sundays falling on the start date
),
'FM00'
),
' days left'
)
ELSE 'OKPI'
END AS AGING
型
1条答案
按热度按时间um6iljoc1#
您可以找到包含日期的周的开始之间的完整周数差异,并将乘以6以获得忽略星期日的天数,然后调整开始和结束日期周围的部分周数:
字符串
您没有在问题中包含任何示例数据,因此我们不知道您期望的输入或输出是什么,如果开始日期是星期天,您的代码似乎有一些调整,并且不清楚这样做的目的是什么。因此,测试和对星期天的开始日进行任何调整都是OP要完成的练习。