sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-fråga för att få maxvärde baserat på olika maxvärden givet flera poster

SELECT
  MAX(id) id,
  po_nbr
FROM
  temp
GROUP BY
  po_nbr

För att ha det associerade datumet kan du göra (akta dig, detta innebär ett sekventiellt id):

SELECT
  temp.id,
  temp.po_nbr,
  temp.crt_ts
FROM
  temp
  INNER JOIN (
    SELECT MAX(id) id FROM temp GROUP BY po_nbr
  ) latest ON latest.id = temp.id

Utan ett sekventiellt ID skulle det vara:

SELECT
  MAX(temp.id) id,
  temp.po_nbr,
  temp.crt_ts
FROM
  temp INNER JOIN (
    SELECT   MAX(crt_ts) crt_ts, po_nbr 
    FROM     temp i
    GROUP BY po_nbr
  ) latest ON latest.crt_ts = temp.crt_ts AND latest.po_nbr = temp.po_nbr
GROUP BY
  temp.po_nbr,
  temp.crt_ts

GROUP BY kan utelämnas om det garanterat inte finns två lika datum per po_nbr grupp.

Indexerar på crt_ts och po_nbr hjälp i den sista frågan, skulle skapa ett kombinerat index vara bäst.



  1. Fel i MySQL-biblioteket för Node.js

  2. BCP-importfel Ogiltigt teckenvärde för cast-specifikation

  3. FIX:MySQL – VÄLJ kommando nekad till användare

  4. Fönsterfunktioner SORTERA dyrt, kan vi övervinna det?