Как вернуть новейшую запись для каждой продажи с определенным условием
У меня есть 4 таблицы (продажа, пользователь, продажа статуса и продажа истории)
SaleHistory имеет внешние ключи от продажи, пользователя и StatusSale
Мой стол SALEHISTORY
Я хочу выбрать идентификаторы из всех последних записей для каждой продажи, но ТОЛЬКО, если status_sale_id является одним из них: [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 ответ
Решение
Вы бы использовали WHERE
предложение для status_sale_id. Например:
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)