ДОБАВИТЬ МАКС. Функцию после ROW_NUMBER - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий код:

SELECT 
    * 
FROM 
    (SELECT 
         ROW_NUMBER () OVER (PARTITION BY PO_Number, PO_Value, Supplier 
                             ORDER BY Date_PurchaseOrder) AS Line_Count, 
         * 
     FROM 
         Table_PO) AS T 
WHERE
    Line_Count = 1 

Возвращает Line_Count соответственно.Но вместо предложения WHERE я бы хотел использовать функцию MAX для возврата только самых высоких значений.Я попробовал несколько образцов, но не сработало.

Мне нужно использовать самый высокий Date_PurchaseOrder и игнорировать другие даты.

Поскольку PO_Number может иметь несколько Date_PurchaseOrder, мне нужна только последняя дата в столбце.

Заранее спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Используйте subquery вместо:

select tp.*
from Table_PO tp
where Date_PurchaseOrder = (select max(Date_PurchaseOrder)
                            from Table_PO tp1
                            where tp1.PO_Number = tp.PO_Number
                           );

Однако вы также можете использовать dense_rank() функцию:

select *
from (select *, dense_rank() over (partition by PO_Number 
                                        order by Date_PurchaseOrder desc) as Seq
      from Table_PO 
     ) tp
where Seq = 1;

РЕДАКТИРОВАТЬ: Просто сделать заказ поDESC

SELECT * 
FROM (SELECT *, 
             ROW_NUMBER() OVER (PARTITION BY PO_Number, PO_Value, Supplier 
                                     ORDER  BY Date_PurchaseOrder DESC) AS Line_Count
      FROM Table_PO 
      ) AS T 
Where Line_Count = 1; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...