bfc99 发表于 2015-7-3 11:17
1、需要在PLSQL中进行判断,根据其是否是3、6、9、12月,执行不同的SQL。
2、输出的样式,最好在外层应用 ...
谢谢了,我自己写个SQL,如下:
WITH TMP AS
(SELECT '2015.01' DT, 2 AMNT
FROM DUAL
UNION ALL
SELECT '2015.02', 3
FROM DUAL
UNION ALL
SELECT '2015.03', 6
FROM DUAL
UNION ALL
SELECT '2015.04', 7
FROM DUAL
UNION ALL
SELECT '2015.05', 7
FROM DUAL
UNION ALL
SELECT '2015.06', 7
FROM DUAL
UNION ALL
SELECT '2015.07', 7
FROM DUAL)
SELECT DECODE(STAT_TYPE, '0', '1', '2'), SUM(STAT_AMNT)
FROM (SELECT NVL(TO_CHAR(TO_DATE(T.DT, 'YYYY.MM'), 'Q'), 0) AS STAT_TYPE,
SUM(T.AMNT) AS STAT_AMNT
FROM TMP T
WHERE T.DT BETWEEN SUBSTR('2015.07', 1, 4) || '.01' AND '2015.07'
GROUP BY ROLLUP(TO_CHAR(TO_DATE(T.DT, 'YYYY.MM'), 'Q')))
WHERE MOD(STAT_TYPE * 3, SUBSTR('2015.07', 6, 2)) = 0
GROUP BY DECODE(STAT_TYPE, '0', '1', '2')
|