0

我有一个名为sales列的简单表

createdon, saleid, customerid 

其他表我有customer列的表

customerid, name, etc..

现在我需要客户的最后 5 次销售,

在另一个叫scanned我的桌子上

scannedid,saleid,customerid

我相信我需要客户的最后 5 个销售 ID,因为我可以得到客户在他们的最后 5 个销售中扫描的内容(销售不是同一天,例如客户在星期一和星期六拜访,但其他客户在星期二和星期四拜访,但此信息对于这个例子并不重要)

我真正的问题是

如何获取最近 5 次销售中扫描的客户 ID?

为此,我相信我确实需要查询获取客户的最后 5 个销售 ID。我有 3 个客户,然后我需要客户 1、客户 2 和客户 3 的最后 5 个销售,然后我将返回 15 个销售 ID

4

1 回答 1

1

通过客户,我假设您的意思是客户ID。我认为您需要根据创建日期降序排列的前五条销售记录。确切的语法取决于数据库。这是一种方法:

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
于 2012-12-10T23:57:23.060 回答