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

sql заявка със самостоятелно присъединяване

WITH ranked AS (
  SELECT
    *,
    rn = ROW_NUMBER() OVER (PARTITION BY RecId ORDER BY Dt DESC)
  FROM TableA
)
SELECT
  r1.Id,
  r1.Dt,
  r1.Stat,
  r1.RecId
FROM ranked r1
  INNER JOIN ranked r2 ON r1.RecId = r2.RecId AND r2.rn = 1
WHERE r1.Stat = 2

АКТУАЛИЗАЦИЯ след актуализацията на въпроса

WITH ranked AS (
  SELECT
    *,
    rn = ROW_NUMBER() OVER (PARTITION BY RecId ORDER BY Dt DESC)
  FROM TableA
)
SELECT
  Id,
  Dt,
  Stat,
  RecId
FROM ranked
WHERE Stat = 2 AND rn = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да реферирам един CTE два пъти?

  2. Как да намеря границите на групи от последователни последователни числа?

  3. LIKE срещу CONTINS на SQL Server

  4. Entity Framework и SQL Server 2012 Пейджинг

  5. Клиентски отчети от уеб приложението