sql - 动态显示会计年度 - SQL
问题描述
我创建了一个生成当年数据的 Oracle SQL 查询:
SELECT A.ITEMNO, A.DESCRIP, SUM(RD.QTYRETURNED) AS "TOTAL QTY RETURNED"
FROM RMA R LEFT OUTER JOIN RMA_DETAIL RD ON R.ID=RD.RMA_ID
LEFT OUTER JOIN ARINVT A ON RD.ARINVT_ID=A.ID
LEFT OUTER JOIN ARCUSTO C ON C.ID = A.ARCUSTO_ID
WHERE ((R."CLOSED" IS NULL ) OR ((R.CLOSED='N' OR R.CLOSED='Y'))) AND
EXTRACT(YEAR FROM R.RMA_DATE) = EXTRACT(YEAR FROM SYSDATE)
GROUP BY A.ITEMNO, A.DESCRIP
ORDER BY "TOTAL QTY RETURNED" DESC
我需要创建一个返回我们财政年度(12/1 - 11/30)的查询,所以我创建了这个:
SELECT A.ITEMNO, A.DESCRIP, SUM(RD.QTYRETURNED) AS "TOTAL QTY RETURNED"
FROM RMA R LEFT OUTER JOIN RMA_DETAIL RD ON R.ID=RD.RMA_ID
LEFT OUTER JOIN ARINVT A ON RD.ARINVT_ID=A.ID
LEFT OUTER JOIN ARCUSTO C ON C.ID = A.ARCUSTO_ID
WHERE ((R."CLOSED" IS NULL ) OR ((R.CLOSED='N' OR R.CLOSED='Y'))) AND
R.RMA_DATE >= ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), -7) AND R.RMA_DATE <
ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), 5)
GROUP BY A.ITEMNO, A.DESCRIP
ORDER BY "TOTAL QTY RETURNED" DESC
这些是用于创建 BI 仪表板的查询。财政年度查询的问题在于,当 sysdate 月份发生变化时,数据也会发生变化。这样做最干净的方法是什么?我只是从 SQL 开始,所以任何指向学习文章或解释的链接都会有很长的路要走。TIA
解决方案
您可以尝试如下查询。它根据您当前所在的月份计算“开始”和“结束”日期
SELECT A.ITEMNO, A.DESCRIP, SUM (RD.QTYRETURNED) AS "TOTAL QTY RETURNED"
FROM RMA R
LEFT OUTER JOIN RMA_DETAIL RD ON R.ID = RD.RMA_ID
LEFT OUTER JOIN ARINVT A ON RD.ARINVT_ID = A.ID
LEFT OUTER JOIN ARCUSTO C ON C.ID = A.ARCUSTO_ID
WHERE ((R."CLOSED" IS NULL) OR ((R.CLOSED = 'N' OR R.CLOSED = 'Y')))
AND R.RMA_DATE >=
TO_DATE (
CASE EXTRACT (MONTH FROM SYSDATE)
WHEN 12 THEN TO_CHAR (SYSDATE, 'YYYY')
ELSE TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'YYYY')
END
|| '-12-01',
'YYYY-MM-DD')
AND R.RMA_DATE <
TO_DATE (
CASE EXTRACT (MONTH FROM SYSDATE)
WHEN 12 THEN TO_CHAR (ADD_MONTHS (SYSDATE, 12), 'YYYY')
ELSE TO_CHAR (SYSDATE, 'YYYY')
END
|| '-12-01',
'YYYY-MM-DD')
GROUP BY A.ITEMNO, A.DESCRIP
ORDER BY "TOTAL QTY RETURNED" DESC
推荐阅读
- ios - iOS 应用发布:捆绑标识符错误?
- django - django模板中的括号(类似)优先顺序
- c++ - 在 cmake 配置后的链接阶段不尊重 BOOST_ROOT
- email - 自定义 exim 过滤器的问题
- bash - 如何创建文件名中包含空字节的文件?
- javascript - 如何使用 async/await 函数解决 Promise?
- ios - 在后台模式下从 Alamofire 获取数据
- angular - 如何获取 Angular 模板中的 JSON 属性值或键?呈现 JSON 值?
- r - 使用 DPLYR 添加新行作为其他分组行的计算
- java - 仅选择一次 jComboBox 项目以将行添加到 jTable