Это должно приблизить вас к тому, что вам нужно:
DECLARE @sourceTable TABLE(number int,amount int, yr int, modifiedDate datetime, itm int, City varchar(20))
DECLARE @destTable TABLE(number int,amount int, yr int, modifiedDate datetime, itm int, City varchar(20))
INSERT INTO @sourceTable (number, amount, yr, modifiedDate, Itm, City ) VALUES (1,100,2011,'01-01-2011',2,'Amsterdam')
INSERT INTO @sourceTable (number, amount, yr, modifiedDate, Itm, City ) VALUES (1,100,2011,'01-02-2011',5,'Den Haag')
INSERT INTO @sourceTable (number, amount, yr, modifiedDate, Itm, City ) VALUES (2,4560,2011,'01-02-2011',6,'Amsterdam')
INSERT INTO @sourceTable (number, amount, yr, modifiedDate, Itm, City ) VALUES (33,456,2010,'01-02-2011',12,'Leiden')
INSERT INTO @sourceTable (number, amount, yr, modifiedDate, Itm, City ) VALUES (22,456,2010,'01-02-2011',12,'Leiden')
;WITH CTE AS
(
SELECT number, amount, yr, modifiedDate
, ROW_NUMBER() OVER (PARTITION BY number, amount, yr ORDER BY modifiedDate DESC) AS itemRank
FROM @sourceTable
GROUP BY number, amount, yr, modifiedDate
)
INSERT INTO @destTable (number, amount, yr, modifiedDate, Itm, City )
SELECT st.number, st.amount, st.yr, st.modifiedDate, st.Itm, st.City
FROM @sourceTable st
INNER JOIN cte ON st.number = cte.number
AND st.amount = cte.amount
AND st.yr = cte.yr
AND st.modifiedDate = cte.modifiedDate
WHERE itemRank = 1
ORDER BY modifiedDate DESC
SELECT * FROM @destTable