Hallo,
man kann es über ein GROUP BY lösen, es geht aber auch über eine Fensterfunktion mit
ROW_NUMBER (Transact-SQL), siehe dort Beispiel C.Verwenden von ROW_NUMBER () mit PARTITION
Oder als Beispiel mit ein paar Dummy Daten
;WITH sourceData AS
(SELECT 1 AS ID, '12345' AS PLZ, 'ABC' AS Produkt, {d N'2015-01-01'} AS Datum
UNION ALL
SELECT 2 AS ID, '12345' AS PLZ, 'ABC' AS Produkt, {d N'2015-01-02'} AS Datum
UNION ALL
SELECT 3 AS ID, '23456' AS PLZ, 'XYZ' AS Produkt, {d N'2015-01-03'} AS Datum
UNION ALL
SELECT 4 AS ID, '23456' AS PLZ, 'XYZ' AS Produkt, {d N'2015-01-03'} AS Datum)
, window AS
(SELECT ID, PLZ, Produkt, Datum,
ROW_NUMBER() OVER (PARTITION BY PLZ, Produkt ORDER BY Datum DESC) AS RowNum
FROM sourceData)
SELECT *
FROM window
WHERE RowNum = 1
Olaf Helper
[
Blog] [
Xing] [
MVP]