代码之家  ›  专栏  ›  技术社区  ›  Rishi Chandak

获取最新价格SQLITE

  •  1
  • Rishi Chandak  · 技术社区  · 9 年前

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

    _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中使用行数函数实现了这个结果,但我希望在没有这样的函数的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 回复  |  直到 9 年前
        1
  •  1
  •   Gordon Linoff    9 年前

    这有点棘手,但有一种方法:

    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'
                      );
    
        2
  •  0
  •   Richard Xu    9 年前

    选择标题下的ID,最大(价格) 从t 其中wefDate<"2016-11-20" 按人头下分组;