获取最新价格SQLITE

时间:2016-11-29 17:11:45

标签: sql sqlite greatest-n-per-group

我有一个包含_id,underSubheadId,wefDate,price的表。 无论何时创建产品或编辑价格,也会在此表中输入。 我想要的是如果我输入日期,我会在日期之前获得所有不同UnderSubheadIds的最新价格(如果没有找到条目,则在该日期获得)

_id underHeadId wefDate   price
1      1      2016-11-01    5 
2      2      2016-11-01    50
3      1      2016-11-25    500
4      3      2016-11-01    20 
5      4      2016-11-11    30
6      5      2016-11-01    40
7      3      2016-11-20    25
8      5      2016-11-15    52

如果我输入2016-11-20作为日期我应该

1  5   
2  50
3  25
4  30
5  52 

我已经在SQL SERVER中使用ROW NUMBER函数实现了结果,但是我希望这个结果在Sqlite中没有这样的功能。 此外,如果输入2016-10-25这样的日期(没有条目)我想要的是第一个日期的价格。 与1一样,我们将获得最接近5的价格,第一个条目是2016-11-01。

这是SQL SERVER的查询工作正常。但我想要它没有ROW_NUMBER函数的Sqlite。

select underSubHeadId,price from(
    select underSubHeadId,price, ROW_NUMBER() OVER (Partition By underSubHeadId order by wefDate desc) rn from rates
    where wefDate<='2016-11-19') newTable
where newTable.rn=1

谢谢

2 个答案:

答案 0 :(得分:1)

这有点棘手,但这是一种方式:

select t.*
from t
where t.wefDate = (select max(t2.wefDate)
                   from t t2
                   where t2.underSubHeadId = t.underSubHeadId and
                         t2.wefdate <= '2016-11-20'
                  );

答案 1 :(得分:0)

选择underHeadId,max(price) 从T wefDate&lt; =“2016-11-20” group by underHead;