• Same in slightly different flavor

    😎

    USE tempdb;

    GO

    DECLARE @SAMPLE TABLE

    (

    PERSON VARCHAR(25) NOT NULL

    ,VAL_1 INT NOT NULL

    ,VAL_2 INT NOT NULL

    );

    INSERT INTO @SAMPLE (PERSON,VAL_1,VAL_2)

    VALUES

    ('John',1,1)

    ,('John',1,1)

    ,('John',2,2)

    ,('John',3,3)

    ,('John',3,3)

    ,('John',4,4);

    /* Nested query */

    SELECT

    X.PERSON

    ,X.VAL_1

    ,X.VAL_2

    FROM

    (

    SELECT

    S.PERSON

    ,S.VAL_1

    ,S.VAL_2

    ,COUNT(PERSON) OVER

    (

    PARTITION BY

    S.PERSON

    ,S.VAL_1

    ) AS PCOUNT

    FROM @SAMPLE S

    ) AS X

    WHERE X.PCOUNT > 1

    /* CTE version */

    ;WITH PBASE AS

    (

    SELECT

    S.PERSON

    ,S.VAL_1

    ,S.VAL_2

    ,COUNT(PERSON) OVER

    (

    PARTITION BY

    S.PERSON

    ,S.VAL_1

    ) AS PCOUNT

    FROM @SAMPLE S

    )

    SELECT

    PB.PERSON

    ,PB.VAL_1

    ,PB.VAL_2

    FROM PBASE PB

    WHERE PB.PCOUNT > 1