我有这组数据
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
supplierid 11在2014-01-01没有购买,所以他根本没有出现。
这就是我所做的:
select supplierid,date, max(date)
from purchasing
where supplierid in (select supplierid
from purchasing
where date='2014-01-01')
这不起作用。我知道我应该以某种方式使用窗口功能,但我不知道如何......有什么想法吗?
答案 0 :(得分: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';
答案 1 :(得分:3)
SQLite可能会支持从3.25版开始的窗口函数。该文档位于https://www.sqlite.org/draft/windowfunctions.html。