2016-11-24 9 views
0

私はPRODUCT_ID最大日付行にpostgresql

click here to see what i want

によって行の最大の日付を知りたい

click to see table

、製品によって最大の日付を持つ行を知りたいです

私はDISTINCTを試しましたが、成功することはできません!

+2

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557# 285557 –

+0

'select * from product pどこにも存在しません(select * from product x where x.product_id = p.product_id and x.pdate> p.pdate); ' – joop

答えて

0
select * from (
    SELECT *, row_number() over (partition by Product_ID order by date desc) r 
    FROM table 
) T 
WHERE T.r=1 
+0

偉大な答え!その本当に役立つ –

+0

歓迎@RohanNayaniそれはあなたが答えとしてカムマークを支援する場合 – mohan111

1

標準的な方法の1つは、サブクエリを使用して各製品IDの最大日付に対応するレコードを特定し、元のテーブルをINNER JOINで制限することです。

SELECT t1.* 
FROM yourTable t1 
INNER JOIN 
(
    SELECT PRODUCT_ID, MAX(DATE) AS DATE 
    FROM yourTable 
    GROUP BY PRODUCT_ID 
) t2 
    ON t1.PRODUCT_ID = t2.PRODUCT_ID AND 
     t1.DATE  = t2.DATE 

これを行う別の方法は、ウィンドウ関数を使用する方法です。

+0

あなたの迅速な対応に大変感謝しています! –