sql - 如何在 Oracle SQL 中计算总共 6 个月?
问题描述
我试试这个 SQL 语句:
SELECT
custodycd,
SUM(mramt) mramt_6_month,
txdate,
CASE
WHEN LAG(mramt, 6) OVER (ORDER BY txdate) IS NOT NULL
THEN SUM(mramt) OVER (ORDER BY txdate ROWS BETWEEN 6 PRECEDING AND 1 PRECEDING)
ELSE NULL
END AS mramt_6_month_1
FROM
(SELECT
MAX(mramt) mramt,
t.afacctno,
t.custodycd,
t.txdate
FROM
tbl_mr3007_log t
WHERE
txdate >= '30/nov/2020'
AND mramt <> 0
GROUP BY
t.afacctno,
t.txdate,
t.custodycd)
GROUP BY
custodycd,
txdate
ORDER BY
txdate
我得到一个错误:
ORA-00979: 不是 GROUP BY 表达式
谢谢你的帮助
解决方案
错误消息似乎很清楚。但是,您要做什么并不清楚。
我猜每个custodycd
日期都有多行。从第七行开始,您需要前六行的总和。
如果是这样,那么代码如下所示:
(CASE WHEN ROW_NUMBER() OVER (PARTITION BY custodycd ORDER BY txdate) > 6
THEN SUM(SUM(mramt)) OVER (PARTITION BY custodycd
ORDER BY txdate
ROWS BETWEEN 6 PRECEDING AND 1 PRECEDING
)
END) AS mramt_6_month_1
推荐阅读
- django - 如何在 django 中正确分配 through 属性?
- botframework - 如何获取组织中的 MS Teams 用户列表?
- r - 如果变量具有重复值,则从数据框中删除组
- python - 重定向到视图时的 Django NoReverseMatch
- javascript - 子字符串而不是子字符串的正则表达式
- joomla - 如何在 Joomla 中使用 Smart Slider 创建此滑块?
- php - Symfony 3.4:如何在树枝中获得完整的国家名称
- scala - Scala JavaConverters 似乎不适用于静态方法返回的集合
- ionic3 - InAppBrowser 与 ionic 3 应用程序中的 Admob Banner 重叠
- ms-office - Power BI / DAX - 变化时间段的动态比较