Мой запрос выглядит следующим образом:ROW_NUMBER() над (Partition по ....) для возврата конкретной строки
with T1 as (
Select
Dept_No,
Product_No,
Order_No,
Order_Type
Row_number() over (partition by Product_ID order by Order_No desc) as "COUNT"
From Orders_Table)
Select * from T1
where ("COUNT" = '1' and "Order_Type" <> 'Cancel')
or ("COUNT" = '2' AND "Order_Type" <> 'Cancel'
Так что я пытаюсь вытащить самый последний заказ, который не был отменен. По существу моя функция ROW_number() over (partition by ...) помещает заказы в последовательном порядке с 1, являющимся самым последним заказом, а 2 - вторым самым последним заказом. Проблема заключается в том, что с этим запросом он вытягивает как последний, так и второй самый последний порядок. Я пытаюсь написать это, где, если он дает только один или другой. Поэтому, если COUNT = 1 и order_type не отменяется, покажите мне только эту запись. Если нет, тогда покажи мне второе.
Большое спасибо за помощь заранее. Это делается в Toad для Oracle 9.5 с использованием вкладки SQL.
Input/Output, пожалуйста. – zaratustra
Добавьте «Order_Type» <> «Отменить» на cte, а затем посмотрите только «Count» = '1' во втором запросе. Попробуй это. – websch01ar
Websch01ar. Я просто подумал, что прямо перед тем, как я прочитаю ваш комментарий. Отличная идея! Позвольте мне проверить, а затем отметить как ответ – user3486773