在SQLITE中使用窗口函数

在SQLITE中使用窗口函数,sql,sqlite,Sql,Sqlite,我有这组数据 purchasingid date supplierid 1 2014-01-01 12 2 2014-01-01 13 3 2013-12-06 12 4 2013-12-05 11 5 2014-01-01 17 6 2013-12-05 12

我有这组数据

purchasingid          date   supplierid
1                2014-01-01    12
2                2014-01-01    13
3                2013-12-06    12
4                2013-12-05    11
5                2014-01-01    17
6                2013-12-05    12
我想检查所有在2014-01-01购买的供应商,他们之前的订单日期是什么。如果不存在,请将其留空

意思是我想得到:

supplierid   date   last_time_buy_date
12            2014-01-01   2013-12-06
13            2014-01-01  
17            2014-01-01
供应商11没有在2014年1月1日购买,因此他根本没有出现

这就是我所做的:

select supplierid,date, max(date)
from purchasing 
where supplierid in (select supplierid
                     from purchasing
                     where date='2014-01-01')

这不管用。我知道我应该以某种方式使用窗口函数,但我不知道如何。。。有什么想法吗?

SQLite不支持窗口功能。相反,您可以执行以下操作:

select p.*,
       (select max(p2.date)
        from purchasing p2
        where p2.supplierid = p.supplierid and
              p2.date < p.date
       ) as prev_date
from purchasing p
where p.date = '2014-01-01';

SQLite可能支持从版本3.25开始的窗口函数。相关文档位于。

谢谢。但是,有些客户在您的查询中有两行,如果供应商在2014-01-01有两个订单,我们可以更改p.date='2014-01-01';是最起码的日期吗?因此,如果我们在这个日期有多个记录,这将是最小的?@jack。我不完全明白你的意思。可以使用子查询在where子句中获取最短日期。如果这不能回答你评论中的问题,那么再问另一个问题。你似乎忘记了你可以接受一个很好的答案