我是Oracle的新手。我已经找到了我需要的大部分内容但是一个领域让我非常疯狂。看起来它应该很简单,但我认为我的大脑是油炸的,我只是无法理解它。我正在尝试制作销售报告。我根据发票日期做各种疯狂的事情。我需要做的最后一件事是能够创建一个周数,以便我可以报告每周销售年份与年份。出于本报告的目的,我的财政年度恰好在每年的12月1日开始(无论一周中的哪一天)。例如,12月1日至7日将是第1周,等等。我可以使用各种功能获得周数,但所有功能都基于日历年或ISO周。如何轻松生成一个字段,该字段将为我提供自12月1日以来的周数?非常感谢你的帮助。
答案 0 :(得分:2)
忘记默认的周数格式,因为这不符合此特定要求。我可能会从发票日期减去12月1日之前的剩余部分并将其除以7.向下舍入,加1并且你应该没事。
select floor(
(
trunc(invoiceDate) -
case
-- if December is current month, than use 1st of this month
when to_char(invoiceDate, 'MM') = '12' then trunc(invoiceDate, 'MM')
-- else, use 1st December of previous year
else add_months(trunc(invoiceDate, 'YYYY'), -1)
end
) / 7
) + 1
from dual;