ANSI SQL 按(印度)财政年度 YTD 分组 - (过去 5 年 YTD)
Posted
技术标签:
【中文标题】ANSI SQL 按(印度)财政年度 YTD 分组 - (过去 5 年 YTD)【英文标题】:ANSI SQL grouping by (Indian) financial year YTD - (last 5 years YTD) 【发布时间】:2022-01-06 22:23:10 【问题描述】:谁能指出如何对印度财政(4 月至 3 月)截至今天(过去 5 年)的数据进行分组。例如,我需要从表 'aaa' 中提取过去 5 年从 4 月 1 日到今天的日期中的 'field1'、'field2'。我目前的解决方案可以安全运行到 12 月,但稍后会出错
SELECT
"Date",
"Daily data",
"ID",
"GA%",
"MA%"
FROM "table"
WHERE month("Date") >= 4
AND month("Date") <= month(today())
AND date("Date") < date(today())
Expected result format grouped by fiscal years:
FY-1 sum(daily data during the period) sum(GA) sum(MA)
FY-2 sum(daily data during the period) sum(GA) sum(MA)
【问题讨论】:
【参考方案1】:SELECT
"Date",
"Daily data",
"ID",
"GA%",
"MA%"
FROM "table"
WHERE
"Date" between '2021-04-01' and '2021-11-29'
OR
"Date" between '2020-04-01' and '2020-11-29'
OR
"Date" between '2019-04-01' and '2019-11-29'
OR
"Date" between '2018-04-01' and '2018-11-29'
OR
"Date" between '2017-04-01' and '2017-11-29'
【讨论】:
对不起,但这不会给我预期的结果。这等于选择从 01-04-2017 到当前日期 (ytd) 的所有内容。此外,我需要将印度财政年度(比如 FY2017、FY2018 等)分组,印度财政年度从 4 月 1 日到 3 月 31 日。 好的 - 但这不是你的问题所说的:“我需要在过去 5 年中从 4 月 1 日到 11 月 29 日提取......”。请根据您的确切要求更新您的问题,并提供一些示例数据以及您希望根据该示例数据实现的结果 - 所有这些都是可编辑的文本 是的,已更新。希望这会有所帮助。【参考方案2】:未经测试的记事本涂鸦
SELECT
MIN(`Date`) AS StartDate
, MAX(`Date`) AS EndDate
, COUNT(ID) AS CountId
, SUM(`GA%`) AS `TotalGa%`
, SUM(`MA%`) AS `TotalMa%`
FROM `table` AS aaa
WHERE
(
(YEAR(`Date`) BETWEEN YEAR(CURRENT_DATE) - 4 AND YEAR(CURRENT_DATE) - 1)
OR
(YEAR(`Date`) = YEAR(CURRENT_DATE) AND MONTH(`Date`) <= 11)
OR
(YEAR(`Date`) = YEAR(CURRENT_DATE) - 5 AND MONTH(`Date`) > 3)
)
AND
(
MONTH(`Date`) NOT IN (12, 1, 2, 3)
OR
YEAR(`Date`) = YEAR(CURRENT_DATE)
)
GROUP BY CASE WHEN MONTH(`Date`) <= 3 THEN YEAR(`Date`) - 1
ELSE YEAR(`Date`) END
ORDER BY MIN(`Date`) DESC
【讨论】:
感谢您的努力,但这不起作用。它将数据捕获限制在 然后将WHERE子句中的<= 3
改为<= 11
。我试图确保完整的财政年度。
再次抱歉,查询会提取 2016 年 4 月 1 日至 2021 年 11 月 30 日的所有数据,而我的要求必须排除 2020 年 12 月 16 日 17 日 18 月 19 日的所有部分, 20 年 1 月 17 日/18 月 19 日,20 年 2 月 17 日/18 月 19 日,20 年 3 月 17 日/18 月 19 日。简而言之 - 我试图在过去 5 年中将 YTD 分组为印度财政。印度财政从 4 月到 3 月运行
我真的不明白你为什么要排除 4 个月。但我为它添加了一个额外的标准。
不错,但是 GROUP BY 不是 ANSI SQL-92。以上是关于ANSI SQL 按(印度)财政年度 YTD 分组 - (过去 5 年 YTD)的主要内容,如果未能解决你的问题,请参考以下文章