我有一张表格,下面有以下数据。如果表格中不存在我的sql中的where子句,我正在努力使用sql来选择具有max fiscal_period和fiscal_year的行。
所以换句话说,如果我尝试选择尚不存在的会计年度8,我的查询应检索具有最大期间和年份的行。任何人都可以帮我提供一个可以提供答案的查询吗?
这是我到目前为止所尝试的内容。
SELECT
nvl(FISCAL_PERIOD,max(FISCAL_PERIOD)),nvl(FISCAL_year,max(FISCAL_year)),amount
FROM MAXTABLE
where fiscal_period = 5
group by FISCAL_PERIOD,FISCAL_year, amount;
CREATE TABLE MAXTABLE
( "FISCAL_PERIOD" NUMBER,
"FISCAL_YEAR" NUMBER,
"AMOUNT" NUMBER
)
Insert into MAXTABLE (FISCAL_PERIOD,FISCAL_YEAR,AMOUNT) values (1,9,50);
Insert into MAXTABLE (FISCAL_PERIOD,FISCAL_YEAR,AMOUNT) values (2,5,50);
Insert into MAXTABLE (FISCAL_PERIOD,FISCAL_YEAR,AMOUNT) values (3,6,50);
答案 0 :(得分:3)
在查询中使用union all
获取最大年份的数据,并为目标年份添加not exists
条件,因此无法返回联合的两半:
SELECT FISCAL_PERIOD, FISCAL_year, amount
FROM MAXTABLE
where fiscal_period = 5
union all
SELECT FISCAL_PERIOD, FISCAL_year, amount
FROM MAXTABLE
where fiscal_period = (select max(fiscal_period) from MAXTABLE)
and not exists (select * from MAXTABLE where fiscal_period = 5)