我有一个 SQL 查询,如下所示。我希望为
dynamic dates
和 current
加上 previous financial years
,这样当我将来运行代码时,我就不必手动更新注释部分。
SELECT '2023/2024' AS FY_YEAR_SNAPSHOT, --I want to make 2023/2024 as dynamic
1 AS COUNT
FROM TABLE
WHERE TO_DATE('2023-07-01', 'YYYY-MM-DD')
BETWEEN EFEC_STRT_DT AND EFEC_END_DT -- '2023-07-01' to be dynamic
UNION ALL
SELECT '2022/2023' AS FY_YEAR_SNAPSHOT, -2022/2023 to be dynamic
1 AS COUNT
FROM TABLE
WHERE TO_DATE('2022-07-01', 'YYYY-MM-DD')
BETWEEN EFEC_STRT_DT AND EFEC_END_DT --2022-07-01 to be dynamic.
不太清楚您的参考日期是什么(是 SYSDATE 还是其他日期)。这是根据参考日期生成日期的代码。
WITH
tbl (ID, REFFERENCE_DATE) AS
( Select 1, DATE '2023-06-30' From Dual Union All
Select 1, DATE '2023-07-01' From Dual Union All
Select 1, DATE '2024-09-30' From Dual
)
Select ID,
REFFERENCE_DATE,
Case When EXTRACT(Month From REFFERENCE_DATE) <= 6
Then To_Char(EXTRACT(Year From REFFERENCE_DATE) - 1) || '/' || To_Char(EXTRACT(Year From REFFERENCE_DATE))
Else To_Char(EXTRACT(Year From REFFERENCE_DATE)) || '/' || To_Char(EXTRACT(Year From REFFERENCE_DATE) + 1)
End "FY_YEAR_SNAPSHOT",
Case When EXTRACT(Month From REFFERENCE_DATE) <= 6
Then To_Date(To_Char(EXTRACT(Year From REFFERENCE_DATE) - 1) || '-07-01', 'yyyy-mm-dd')
Else To_Date(To_Char(EXTRACT(Year From REFFERENCE_DATE)) || '-07-01', 'yyyy-mm-dd')
End "FY_START"
From tbl
/* R e s u l t :
ID REFFERENCE_DATE FY_YEAR_SNAPSHOT FY_START
---------- --------------- ------------------- --------
1 30.06.23 2022/2023 01.07.22
1 01.07.23 2023/2024 01.07.23
1 30.09.24 2024/2025 01.07.24
*/