根据基于会计年度和会计期间的累计金额查询oracle表

时间:2015-06-03 13:30:30

标签: sql oracle

在我解释我想要完成的事情之前,让我先向您展示我正在使用的数据。这是一个更大的表的一部分,所以这只是我认为最能代表我试图回答的问题的数据的一个子集。 表创建:

CREATE TABLE "MIGUEL83"."CUM_LEDGER" 
   ( "FIELD_NAME" VARCHAR2(50 BYTE), 
  "ACCOUNT_CODE" VARCHAR2(50 BYTE), 
  "TRANASCTION_AMOUNT" NUMBER, 
  "GRANT_CODE" VARCHAR2(50 BYTE), 
  "FISCAL_PERIOD" VARCHAR2(50 BYTE), 
  "FISCAL_YEAR" NUMBER(20,0)
   )



 Insert for table.
    Insert into CUM_LEDGER (FIELD_NAME,ACCOUNT_CODE,TRANASCTION_AMOUNT,GRANT_CODE,FISCAL_PERIOD,FISCAL_YEAR) values ('YTD','2010',11019.9,'202118','12',2006);
    Insert into CUM_LEDGER (FIELD_NAME,ACCOUNT_CODE,TRANASCTION_AMOUNT,GRANT_CODE,FISCAL_PERIOD,FISCAL_YEAR) values ('YTD','2010',5084.08,'202118','10',2007);
    Insert into CUM_LEDGER (FIELD_NAME,ACCOUNT_CODE,TRANASCTION_AMOUNT,GRANT_CODE,FISCAL_PERIOD,FISCAL_YEAR) values ('YTD','2010',1105.39,'202118','11',2007);
    Insert into CUM_LEDGER (FIELD_NAME,ACCOUNT_CODE,TRANASCTION_AMOUNT,GRANT_CODE,FISCAL_PERIOD,FISCAL_YEAR) values ('YTD','2010',0,'202118','12',2007);

我想要做的是基本上写一个查询,将所有金额汇总到我决定的财政年度和期间。所以换句话说,如果我将where子句设置为“我的fiscal_period ='10'和我的fiscal_year ='2007'”。我想包括该财政年度和期间之前的项目,因此在这种情况下,财政期间12的财政期间2006年有一个11019.9的金额,我应该包括,因为该交易发生在财政年度和愿望期间之前我在查询。

预期结果应如下 enter image description here

这是我写这个SQL的糟糕尝试,我知道它不会工作,它需要帮助。

SELECT
  FIELD_NAME,
  ACCOUNT_CODE,
  sum(TRANASCTION_AMOUNT),
  GRANT_CODE,
  FISCAL_PERIOD,
  FISCAL_YEAR
FROM MIGUEL83.CUM_LEDGER 
WHERE FISCAL_PERIOD = '10'
AND FISCAL_YEAR = '2007'
group by 
 FIELD_NAME,
  ACCOUNT_CODE,
  GRANT_CODE,
  FISCAL_PERIOD,
  FISCAL_YEAR;

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

尝试:

SELECT
    sum(TRANASCTION_AMOUNT)
FROM MIGUEL83.CUM_LEDGER 
WHERE (TO_NUMBER(FISCAL_PERIOD) <= 10 AND FISCAL_YEAR = 2007)
OR FISCAL_YEAR < 2007