【发布时间】:2015-06-03 13:30:29
【问题描述】:
在解释我要完成的工作之前,让我先向您展示我正在使用的数据。这是一个更大的表格的一部分,所以这只是我认为最能代表我试图回答的问题的数据的一个子集。 表创建:
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 子句设置为“where my accounting_period = '10' and my accounting_year = '2007'”。我还想包括该财政年度和期间之前的项目,因此在这种情况下,我应该在 2006 年财政年度 12 中包含一个金额为 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;
提前感谢你们提供的任何帮助。
【问题讨论】:
-
上一个会计期间是“09”还是“9”?
-
现在是 09。