Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за получаване на максимална стойност въз основа на различна максимална стойност при множество записи

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

За да имате свързаната дата, можете да направите (внимавайте, това предполага последователен идентификатор):

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

Без последователен идентификатор ще бъде:

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 може да бъде пропуснато, ако е гарантирано, че няма две равни дати на po_nbr група.

Индексира на crt_ts и po_nbr помощ в последната заявка, най-добре би било създаването на един комбиниран индекс.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изтриване на дублиращи се записи само с една заявка

  2. Регистър на транзакциите на SQL Server — част 2

  3. Какво разрешение ми трябва, за да използвам SQL Server Table Valued Parameter (TVP) като съхранен proc параметър?

  4. Неправилен синтаксис близо до „GO“

  5. Как да намеря какво е причинило грешките, докладвани в проследяване на профилировач на SQL Server?