在我解释我想要完成的事情之前,让我先向您展示我正在使用的数据。这是一个更大的表的一部分,所以这只是我认为最能代表我试图回答的问题的数据的一个子集。 表创建:
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的金额,我应该包括,因为该交易发生在财政年度和愿望期间之前我在查询。
预期结果应如下
这是我写这个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;
提前感谢您提供的任何帮助。
答案 0 :(得分:2)
尝试:
SELECT
sum(TRANASCTION_AMOUNT)
FROM MIGUEL83.CUM_LEDGER
WHERE (TO_NUMBER(FISCAL_PERIOD) <= 10 AND FISCAL_YEAR = 2007)
OR FISCAL_YEAR < 2007