Digamos que tengo una tabla de "transacciones" que tiene columnas "acct_id" "trans_date" y "trans_type" y quiero filtrar esta tabla para que tenga la última transacción para cada cuenta. Es evidente que lo que podía hacer algo así como¿Cómo hacer una consulta SQL para la última transacción de cada cuenta?
SELECT acct_id, max(trans_date) as trans_date
FROM transactions GROUP BY acct_id;
pero luego perder mi trans_type. Podría hacer una segunda llamada SQL con mi lista de fechas y las identificaciones de cuenta y recuperar mi trans_type, pero eso me parece muy complicado, ya que significa enviar datos de ida y vuelta al servidor sql o crear una tabla temporal.
Hay una manera de hacer esto con una sola consulta, con suerte, un método genérico que funcionaría con mysql, postgres, sql-server y oracle.
Este es mi favorito. También puede hacer que su cláusula where sea 'NOT EXISTS (SELECT NULL FROM transaction z DONDE a.acct_id = z.acct_id AND z.trans_date> a.trans_date)' – cjk