簡體   English   中英

Oracle 計算 YTD、PYTD、QTD、PQTD、MTD、PMTD

[英]Oracle calculate YTD ,PYTD, QTD , PQTD , MTD, PMTD

我的查詢是

select 
ENTRIES,
SUM( CASE WHEN to_char(to_date(record_date, 'yyyy/mm/dd'),'YYYY') =2020
                 THEN ENTRIES END )         AS "Curr Yr ENTRIES" ,
SUM( CASE WHEN to_char(to_date(record_date, 'yyyy/mm/dd'),'YYYY') =2019
                 THEN ENTRIES END )         AS "PREV Yr ENTRIES" ,
SUM( CASE WHEN to_char(to_date(record_date, 'yyyy/mm/dd'),'MM') =11
                 THEN ENTRIES END ) AS "Current Month ENTRIES" ,
SUM( CASE WHEN to_char(to_date(record_date, 'yyyy/mm/dd'),'MM') =10
                 THEN ENTRIES END ) AS "PREV Month ENTRIES" ,
SUM( CASE WHEN to_char(to_date(record_date, 'yyyy/mm/dd'),'MM') =09
                 THEN ENTRIES END ) AS "PREV TO PREV Month ENTRIES" ,
SUM( CASE WHEN to_char(to_date(record_date,'yyyy/mm/dd'), 'Q')=4
                 THEN ENTRIES END ) AS "Curr Qtr ENTRIES"  ,
SUM( CASE WHEN to_char(to_date(record_date,'yyyy/mm/dd'), 'Q')=3
                 THEN ENTRIES END ) AS "PREV Qtr ENTRIES" 
from market
group by ENTRIES

我是 oracle 的新手,在我的查詢中,我對年、月和季度的值進行了硬編碼。 但我希望我的查詢在不提供任何值的情況下工作,以便它自動選擇值讓我知道如何完成。

您可以使用:

SELECT ENTRIES,
       SUM(
         CASE
         WHEN record_date >= TRUNC( SYSDATE, 'YYYY' )
         AND  record_date <  ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), 12 )
         THEN ENTRIES
         END
       ) AS "Curr Yr ENTRIES",
       SUM(
         CASE
         WHEN record_date >= ADD_MONTHS( TRUNC( SYSDATE, 'YYYY' ), -12 )
         AND  record_date <  TRUNC( SYSDATE, 'YYYY' )
         THEN ENTRIES
         END
       ) AS "Prev Yr ENTRIES",
       SUM(
         CASE
         WHEN record_date >= TRUNC( SYSDATE, 'MM' )
         AND  record_date <  ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 1 )
         THEN ENTRIES
         END
       ) AS "Curr Month ENTRIES",
       SUM(
         CASE
         WHEN record_date >= ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), -1 )
         AND  record_date <  TRUNC( SYSDATE, 'MM' )
         THEN ENTRIES
         END
       ) AS "Prev Month ENTRIES",
       SUM(
         CASE
         WHEN record_date >= TRUNC( SYSDATE, 'Q' )
         AND  record_date <  ADD_MONTHS( TRUNC( SYSDATE, 'Q' ), 3 )
         THEN ENTRIES
         END
       ) AS "Curr Qtr ENTRIES",
       SUM(
         CASE
         WHEN record_date >= ADD_MONTHS( TRUNC( SYSDATE, 'Q' ), -3 )
         AND  record_date <  TRUNC( SYSDATE, 'Q' )
         THEN ENTRIES
         END
       ) AS "Prev Qtr ENTRIES"
from market
group by ENTRIES

(雖然我不相信你想要初始ENTRIES,SELECT子句或最后的GROUP BY ,相反,可以在整個時期內SUM 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM