MySQL-派生表查询未获取嵌套Select查询的数据

oxalkeyp  于 2022-10-22  发布在  Mysql
关注(0)|答案(1)|浏览(136)

bounty将在6天后到期。此问题的答案有资格获得+50荣誉奖励。Quark希望更多地关注这个问题。

我有一个队列,它在一段时间内具有增长率。我正在尝试获得我指定的两行之间的总体增长。这是SQL小提琴http://sqlfiddle.com/#!1756年9月2日

select i1.Month, i1.Rate,  EXP(SUM(LOG(1+i2.Rate)))   InfRate 
from Inflation i1
inner join Inflation i2 on i1.Month >=i2.Month
group by i1.Month, i1.Rate
order by Month DESC

这似乎是正确的,我能够在提琴中获得整个月份范围的增长率,但是我尝试使用一个派生表,以便我可以指定月份周期,就像这样,但是它不起作用

select i1.Month, i1.Rate,  EXP(SUM(LOG(1+i2.Rate)))   InfRate 
from (SELECT * FROM `Inflation` WHERE Month between '2020-01-01' and '2022-01-01') as DT
inner join Inflation i2 on i1.Month >=i2.Month
group by i1.Month, i1.Rate
order by Month DESC

我得到错误#1054-“字段列表”中的未知列“i1.Month”
我正在尝试为“2020-01-01”和“2022-01-01”之间的时段或我指定的任何其他范围使用派生表,但它似乎不适合我。如有任何帮助,我们将不胜感激。
考虑到只查询了“2020-01-01”和“2022-01-01”之间的时段,预期结果如下
http://sqlfiddle.com/#!2013年9月8日/1

kxe2p93d

kxe2p93d1#

在第二个示例中,您没有名为i1的表,但您正在从中查询值。我相信你想要的是

select DT.Month, DT.Rate,  EXP(SUM(LOG(1+i2.Rate)))   InfRate 
from (SELECT * FROM `Inflation` WHERE Month between '2020-01-01' and '2022-01-01') as DT
inner join Inflation i2 on DT.Month >=i2.Month
group by DT.Month, DT.Rate
order by Month DESC

它将i1引用替换为DT

相关问题