在SQLITE中使用窗口函数

jac*_*ack 2 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
Run Code Online (Sandbox Code Playgroud)

我想查看在2014-01-01购买的所有供应商,这是他们之前订单的日期.如果不存在则将其留空.

意思是我想得到:

supplierid   date   last_time_buy_date
12            2014-01-01   2013-12-06
13            2014-01-01  
17            2014-01-01
Run Code Online (Sandbox Code Playgroud)

supplierid 11在2014-01-01没有购买,所以他根本没有出现.

这就是我做的:

select supplierid,date, max(date)
from purchasing 
where supplierid in (select supplierid
                     from purchasing
                     where date='2014-01-01')
Run Code Online (Sandbox Code Playgroud)

这不起作用.我知道我应该以某种方式使用窗口功能,但我不知道如何...任何想法?

Gor*_*off 5

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';
Run Code Online (Sandbox Code Playgroud)