Вы можете воспользоваться предложениями CASE
и OVER()
.
DECLARE
@MyTable TABLE(c1 INT, c2 INT, c3 INT)
INSERT INTO @MyTable
VALUES
(1, 32 , 12),
(1, 27 , 15),
(1, 12 , 21),
(2, 23 , 33),
(2, 36 , 49),
(3, 48 , 17),
(3, 21 , 50),
(3, 7 , 25)
SELECT *
FROM (
SELECT
c1
, MAX(c2) OVER(PARTITION BY c1) c2
, CASE WHEN c2 = MAX(c2) OVER(PARTITION BY c1) THEN c3 ELSE NULL END c3
FROM @MyTable
) D
WHERE
c3 IS NOT NULL