我有一个名为sales
的简单表格,其中包含
createdon, saleid, customerid
其他表我有customer
表格列
customerid, name, etc..
现在我需要客户的最后5次销售,
在另一个名为scanned
的表中,我有
scannedid,saleid,customerid
我相信我需要客户的最后5个salesid才能获得客户 在他们的最后5个销售中扫描(销售不是相同的日子,例如一个客户在星期六星期一访问,但其他星期二和星期四访问,但这个信息对于这个例子并不重要)
我真正的问题是
如何获取过去5次销售中扫描过的客户ID?
为此我相信我确实需要查询以获得客户的最后5个salesid 例如。我有3个客户,那么我需要最后5个销售,customer1,customer2和customer3,然后我将有15个saleid返回
答案 0 :(得分:1)
客户端,我认为你的意思是customerid。我想你想要销售的前五个记录,基于创建日期的降序。确切的语法取决于数据库。这是一种方式:
select top 5 customerid
from sales s
order by createdon desc
另一种方式:
select customerid
from sales s
order by createdon desc
limit 5
另一种方式:
select *
from (select customerid, rownum as seqnum
from sales
order by createdon
) s
where seqnum <= 5
既然你已经澄清了你想要的东西,那很简单:
select *
from (select s.*,
row_number() over (partition by customerid order by created on desc) as seqnum
from sales s
) s
where seqnum <= 5