2017-11-30 7 views
0

私はdbの次の構造体を持っています。私はidで最も最近の行を取得する必要があります。例えば、id1のための最もrecenの行、id2のための最もrecenの行、postgresのグループからlasレコードを取得しますか?

SELECT max(fecha), id_transaccion, id_movimiento 
FROM transaccion_movimiento 
group by (id_transaccion, id_movimiento, fecha); 

は後でこれに適応するために :

LEFT JOIN (SELECT max(fecha), id_transaccion, id_movimiento FROM transaccion_movimiento group by (id_transaccion, id_movimiento, fecha) ORDER BY ID_TRANSACCION asc LIMIT 1)nn ON T.id_transaccion = nn.id_transaccion LEFT JOIN ctl_tipo_movimiento IM ON IM.id_tipo_movimiento = nn.id_movimiento " + 

私は助けを必要としてください

Imge with commands and results

+0

※今後は画像を使用しないでください。特に画像の解釈がほとんど不可能です。テキストのコピー/貼り付けが優れています。これは役に立つかもしれません:https://ozh.github.io/ascii-tables/ –

答えて

0

I sugges代わりにrow_number() over()を使用することを検討してください。私はあなたがこの提案を調整する必要があるかもしれので、私には意味を成していた他の多くない日を意味するfechaを認識しながら、Window Functions

SELECT 
     * 
FROM x 
LEFT JOIN (
     SELECT 
      fecha 
      , id_transaccion 
      , id_movimiento 
      , ROW_NUMBER() OVER (PARTITION BY id_transaccion, id_movimiento 
           ORDER BY fecha DESC) AS ultima_fecha_row 
     FROM transaccion_movimiento 
    ) nn ON T.id_transaccion = nn.id_transaccion asn nn.ultima_fecha_row=1 
LEFT JOIN ctl_tipo_movimiento im ON im.id_tipo_movimiento = nn.id_movimiento 

を参照してください。たとえば、私はid_movimientoが "パーティション"に必要かどうか分からない。

  , ROW_NUMBER() OVER (PARTITION BY id_transaccion 
           ORDER BY fecha DESC) AS ultima_fecha_row 
関連する問題