• This problem is known as Relational Division[/url].

    SET NOCOUNT ON;

    USE tempdb;

    GO

    DECLARE @T TABLE (

    Rate int NOT NULL,

    Shift int NOT NULL,

    PRIMARY KEY (Rate, Shift)

    );

    INSERT INTO @T (

    Rate,

    Shift

    )

    VALUES

    (1, 1),

    (1, 2),

    (1, 3),

    (2, 5),

    (3, 1),

    (3, 2),

    (3, 3),

    (8, 4),

    (4, 1),

    (4, 2),

    (5, 1),

    (5, 2),

    (5, 3),

    (5, 4),

    (6, 1),

    (7, 2),

    (8, 2);

    DECLARE @Rate int = 1;

    WITH C1 AS (

    SELECT

    Shift

    FROM

    @T

    WHERE

    Rate = @Rate

    )

    SELECT

    A.Rate

    FROM

    @T AS A

    INNER JOIN

    C1 AS B

    ON A.Shift = B.Shift

    GROUP BY

    A.Rate

    HAVING

    COUNT(*) = (SELECT COUNT(*) FROM C1);

    GO

    /*

    Rate

    1

    3

    5

    */