Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wyeliminować roszczenia z ClaimStatus =1 na podstawie daty działania. SQL Server 2012

Demo SQL

WITH cte as (
    SELECT ClaimNumber, 
           ClaimStatus,
           ROW_NUMBER() over (PARTITION BY ClaimNumber ORDER BY ActivityDate DESC) as rn
    FROM @TempTable
)
SELECT t.*
FROM @TempTable t
JOIN (SELECT *
      FROM cte
      WHERE rn = 1) f
  ON t.ClaimNumber = f.ClaimNumber
 AND f.ClaimStatus = 0

WYJŚCIE

Dodatkowo, jeśli tylko 2 statusy możesz również zrobić

WITH cte as (
    SELECT ClaimNumber
    FROM @TempTable
    GROUP BY ClaimNumber
    HAVING MAX(ClaimStatus) = 0
)
SELECT t.*
FROM @TempTable t
WHERE ClaimNumber IN (SELECT * FROM cte)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2005 Używanie DateAdd do dodawania dnia do daty

  2. Zarządzanie połączeniami SQL Server z C#

  3. T-SQL Grupowanie wierszy z kolumn o maksymalnej długości w różnych wierszach (?)

  4. Wybierz rekord rodzica ze wszystkimi dziećmi w SQL

  5. Znajdź ostatni wiersz w grupie według zapytania-SQL Server