a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

Oracle 按年或月進行統計

2024-08-29 13:53:59
字體:
來源:轉載
供稿:網友
csdn上看到的問題,想想寫了一個。不對的地方請指正。

畫面機能要求對一張表的數據進行統計
表定義(略去用不到的字段)
LB01_PURRECEIVEBOOK

PURRECEIVEDATE    DATE,        --format: 2009/11/01
RECEIVEAMT        NUMBER

① 按年統計時,如果出現空年,則做成該年度金額為0
例:
2009/09/01    1,000
2009/11/01    3,000
2007/12/01    2,000
抽出:
2009    4,000
2008    0
2007    2,000
②按月統計時,出現空月,則做成該月份金額為0
2009/09/01    1,000
2009/11/01    3,000
2009/12/01    2,000
抽出:
2009/09    1,000
2009/10    0
2009/11    3,000
2009/12    2,000


這個可以比較簡單的作出來嗎?

按照年統計
view plaincopy to clipboardPRint?
WITH tmp_table AS (SELECT MAX(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) -   
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) AS NUM,   
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) AS MINYEAR   
  FROM LB01_PURRECEIVEBOOK T   
),   
select_table AS (   
SELECT TMP.YEARSUM, TMP.YEAR, TMP.YMD   
  FROM (SELECT SUM(T.RECEIVEAMT) OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'yyyy') ORDER BY T.PURRECEIVEDATE DESC) AS YEARSUM,   
               TO_CHAR(T.PURRECEIVEDATE, 'yyyy') AS YEAR,   
               TO_CHAR(T.PURRECEIVEDATE, 'yyyy/mm/dd') AS YMD,   
               ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'yyyy') ORDER BY T.PURRECEIVEDATE) AS RN   
          FROM LB01_PURRECEIVEBOOK T) TMP   
WHERE TMP.RN = 1  
  
),   
creatyear_table AS (   
SELECT tmp_table.MINYEAR + LEVEL - 1 AS tmp_year FROM DUAL, tmp_table   
CONNECT BY LEVEL <= tmp_table.NUM + 1  
)   
  
SELECT    
ct.tmp_year,   
NVL(st.YEARSUM, 0) AS YEARSUM   
FROM   
creatyear_table ct,   
select_table st   
WHERE   
ct.tmp_year = st.year(+)  
WITH tmp_table AS (SELECT MAX(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) -
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) AS NUM,
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'yyyy')) AS MINYEAR
  FROM LB01_PURRECEIVEBOOK T
),
select_table AS (
SELECT TMP.YEARSUM, TMP.YEAR, TMP.YMD
  FROM (SELECT SUM(T.RECEIVEAMT) OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'yyyy') ORDER BY T.PURRECEIVEDATE DESC) AS YEARSUM,
               TO_CHAR(T.PURRECEIVEDATE, 'yyyy') AS YEAR,
               TO_CHAR(T.PURRECEIVEDATE, 'yyyy/mm/dd') AS YMD,
               ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'yyyy') ORDER BY T.PURRECEIVEDATE) AS RN
          FROM LB01_PURRECEIVEBOOK T) TMP
WHERE TMP.RN = 1

),
creatyear_table AS (
SELECT tmp_table.MINYEAR + LEVEL - 1 AS tmp_year FROM DUAL, tmp_table
CONNECT BY LEVEL <= tmp_table.NUM + 1
)

SELECT
ct.tmp_year,
NVL(st.YEARSUM, 0) AS YEARSUM
FROM
creatyear_table ct,
select_table st
WHERE
ct.tmp_year = st.year(+)
按照月進行統計
view plaincopy to clipboardprint?
WITH tmp_table AS (SELECT MAX(TO_CHAR(T.PURRECEIVEDATE, 'mm')) -   
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'mm')) AS NUM,   
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'mm')) AS MINMM,   
       MIN(TO_CHAR(T.PURRECEIVEDATE, 'YYYY')) AS MINY   
  FROM LB01_PURRECEIVEBOOK T   
),   
select_table AS (   
SELECT TMP.MMSUM, TMP.MM, TMP.YMD   
  FROM (SELECT SUM(T.RECEIVEAMT) OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'MM') ORDER BY T.PURRECEIVEDATE DESC) AS MMSUM,   
               TO_CHAR(T.PURRECEIVEDATE, 'MM') AS MM,   
               TO_CHAR(T.PURRECEIVEDATE, 'yyyy/mm/dd') AS YMD,   
               ROW_NUMBER() OVER(PARTITION BY TO_CHAR(T.PURRECEIVEDATE, 'MM') ORDER BY T.PURRECEIVEDATE) AS RN   
          FROM LB01_PURRECEIVEBOOK T) TMP   
WHERE TMP.RN = 1  
),   
creatyear_table AS (   
SELECT tmp_table.MINMM + LEVEL - 1 AS TMP_MM,   
       TO_CHAR(TO_DATE(MINY || tmp_table.MINMM + LEVEL - 1, 'YYYY-MM'), 'YYYY-MM') AS TMP_YM   
FROM DUAL, tmp_table   
CONNECT BY LEVEL <= tmp_table.NUM + 1  
)   
SELECT    
ct.TMP_YM,   
TO_CHAR(NVL(ST.MMSUM, 0), '9,999') AS MMSUM   
FROM   
creatyear_table CT,   
select_table ST   
WHERE   
CT.TMP_MM = ST.MM(+)   
ORDER BY    
ct.TMP_YM   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜免费电影 | 欧洲美女7788成人免费视频 | 国产精品一区二区三区在线 | 欧美日韩最新 | 久久久久久久国产精品 | 日韩视频在线一区二区 | 99精品久久久久久久免费 | 日本三级视频在线观看 | 北条麻妃99精品青青久久 | a在线播放 | 黄色小网址 | 精品久久久久国产免费 | 中文字幕在线观看 | 欧美 日韩 国产 一区 | 亚洲精品不卡 | 91天堂 | 日本中文字幕一区二区 | 在线一级视频 | 欧美一区二区大片 | 91亚洲福利 | 国产乱码精品一品二品 | 色黄视频在线观看 | 一区二区精品在线 | 男人天堂手机在线视频 | 成人在线免费 | 午夜精品网站 | 国产精品视频综合 | 欧美日韩综合视频 | 亚洲精品乱码久久久久久国产主播 | 婷婷久久综合 | 黄色精品一区二区 | 日韩一区二区三区在线观看 | 日韩一区在线观看视频 | 中文字幕在线观看日本 | 中文字幕一区二区三区在线视频 | 二区三区 | 久久不射网 | 亚洲一区二区三区 | 91免费版在线观看 | 蜜桃视频麻豆女神沈芯语免费观看 | 99久草 |