I assume that "last" means "largest"?
DECLARE @t TABLE ( col1 INT, col2 CHAR(3), col3 DECIMAL(4,1), col4 INT ); INSERT @t SELECT 123, 'abc', 1.1, 12345 UNION SELECT 123, 'abc', 1.1, 123445 UNION SELECT 1234, 'dsv', 2.0, 123 UNION SELECT 1234, 'dsv', 2.0, 1233; WITH t AS ( SELECT col1, col2, col3, col4, rn = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col4 DESC) FROM @t ) SELECT col1, col2, col3, col4 FROM t WHERE rn = 1;
source share