如何在一定条件下返回每笔销售的最新记录

时间:2017-07-10 20:45:55

标签: sql postgresql greatest-n-per-group

我有4张桌子(Sale,User,StatusSale和SaleHistory)

SaleHistory有来自Sale,User和StatusSale的外键

我的桌子SALEHISTORY

enter image description here

我想从每个Sale的所有最后记录中选择ID,但如果status_sale_id是以下之一,则 ONLY :[1,10,11,12,13,14,15,16, 17,18,19]

我用这个来获得销售的最后记录:

SELECT DISTINCT ON(sale_id) *
FROM sales_status_histories
ORDER BY sale_id, created_at DESC

但在这种情况下,我不知道该怎么做。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您将对status_sale_id使用WHERE子句。 例如:

WITH CTE
AS (
SELECT 
*
,ROW_NUMBER() OVER (PARTITION BY sale_id ORDER BY created_at DESC) AS rn
FROM sales_status_histories

)
SELECT *
FROM CTE
WHERE rn=1
AND status_sale_id IN (1,10,11,12,13,14,15,16,17,18,19)