2017-12-19 5 views
0

以下は、最も新しいバージョンの行を取得する簡単な方法の1つです。これは1行では大丈夫ですが、各行を評価する必要がある場合は遅くなります。最新の行を取得するためのRedshift last_value

SELECT * 
FROM dev.A t1 
where to_char(last_operation_date,'yyyymmdd') = (select max(to_char(last_operation_date,'yyyymmdd')) 
               from dev.A t2 
               where t1.inte_id = t2.inte_id) 
and t1.inte_id = 'PPP2434' 
+1

どのデータ型が 'last_operation_date'ですか? –

+0

timestamp ex- '2017-12-13 22:12:56' –

+0

あなたの要件「最新バージョン」に基づいて、私はあなたがタイムスタンプの時間部分を無視して始めて間違っていると思います。あなたのクエリは、最新の日に発生したすべての行を返します。単一の「最新バージョン」ではありません。 –

答えて

0

あなたは、相関サブクエリを使用せずにinte_idあたり、最新の行を見つけるために、ROW_NUMBER()関数を使用することができます。相関サブクエリには、ネストされたループ・ステップが必要な場合があります。

SELECT * 
FROM (
    SELECT * 
      ,ROW_NUMBER() OVER(PARTITION BY inte_id ORDER BY last_operation_date DESC) last_op_order 
    FROM dev.A t1 
    and t1.inte_id = 'PPP2434' 
    ) 
WHERE last_op_order = 1; 
関連する問題