Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

DISTINCT für nur eine Spalte

Wenn Sie SQL Server 2005 oder höher verwenden, verwenden Sie Folgendes:

SELECT *
  FROM (
                SELECT  ID, 
                        Email, 
                        ProductName, 
                        ProductModel,
                        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
                    FROM Products
              ) a
WHERE rn = 1

BEARBEITEN:Beispiel mit einer Where-Klausel:

SELECT *
  FROM (
                SELECT  ID, 
                        Email, 
                        ProductName, 
                        ProductModel,
                        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
                    FROM Products
                   WHERE ProductModel = 2
                     AND ProductName LIKE 'CYBER%'

              ) a
WHERE rn = 1