Сначала мы должны просто получить самые последние PK
каждого PartPK and LocationPK
, затем мы можем использовать его как подзапрос для возврата полной записи этого PK
, как указано ниже:
CREATE TABLE #test(PK INT, PartPK INT, LocationPK INT, TransactionDate DATETIME, Bin INT)
INSERT INTO #test VALUES
(16473,1,1,'2018-09-03 15:24:57.100',NULL),
(16472,1,1,'2018-09-03 13:24:27.250',NULL),
(16471,1,1,'2018-09-03 13:07:11.777',NULL),
(16470,1,1,'2018-09-03 11:19:57.557',NULL),
(16469,1,2,'2018-09-03 09:32:27.050',NULL),
(16468,2,1,'2018-09-03 07:28:16.250',NULL),
(16467,2,1,'2018-09-03 00:09:30.383',NULL),
(16466,2,1,'2018-08-31 14:21:24.803',NULL),
(16465,2,1,'2018-08-31 13:29:52.253',NULL),
(16463,3,1,'2018-08-31 13:13:47.977',NULL)
SELECT t.*
FROM #test t
INNER JOIN (
SELECT MAX(PK) AS PK --We can use `TransactionDate` as well
FROM #test
GROUP BY PartPK, LocationPK) t1 ON t.PK = t1.PK
OUTPUT
PK PartPK LocationPK TransactionDate Bin
16473 1 1 2018-09-03 15:24:57.100 NULL
16469 1 2 2018-09-03 09:32:27.050 NULL
16468 2 1 2018-09-03 07:28:16.250 NULL
16463 3 1 2018-08-31 13:13:47.977 NULL