首页 > 解决方案 > sql按月和按月分组

问题描述

RDBMS - 最新的 Oracle

我在这里没有我的元素。我需要按帐户和按月组织帐户交易信息,还需要使用另一列显示年初至今的总交易。这是我想要得到的描述

ACCT_ID | ACCT_MM  | FISCAL_YYYY | FISCAL_MM_AMT | YTD_AMT
------------------------------------------------------------
    1   |    11    |     2018    |      25       |   100
    1   |    12    |     2018    |      50       |   150
    1   |    01    |     2019    |      20       |   20

我知道您可以通过 ACCT_MM 获得 FISCAL_MM_AMT 组,FISCAL_YYYY 这是我到目前为止所想出的全部。

SELECT ACCT_ID,ACCT_MM,FISCAL_YYYY,SUM(NVL(ACCT_TRNSCTN_AMT,0))
FROM TBL_ACCT_DETAIL
GROUP BY ACCT_ID,ACCT_MM,FISCAL_YYYY

现在,如何将其与附加列 YTD_AMT 相结合,以将当年到当前月份的所有总数相加,这让我感到困惑。sql菜鸟ftw。

标签: sqloraclegroup-by

解决方案


尝试SUM如下分析函数:

SELECT T.*,
SUM(FISCAL_MM_AMT) 
OVER (PARTITION BY ACCT_ID, FISCAL_YYYY
ORDER BY ACCT_MM) AS YTD_AMT
FROM
(SELECT ACCT_ID,ACCT_MM,FISCAL_YYYY,SUM(NVL(ACCT_TRNSCTN_AMT,0)) AS FISCAL_MM_AMT
FROM TBL_ACCT_DETAIL
GROUP BY ACCT_ID,ACCT_MM,FISCAL_YYYY);

干杯!!


推荐阅读