|
■No89787 (ルパン さん) に返信
> 条件にNoを指定したときに
> 全てのNameに登録されているNoのID
> を取得したいのですがどうすればよいのでしょうか?
[ID]でGroup ByしてCOUNT([Name])が3のものだけを取り出す,とすればよいのではないでしょうか。
とりあえずお試し。
DECLARE @test TABLE ( [Name] CHAR, [No] INT, [ID] CHAR )
INSERT INTO @test
VALUES
( 'A', 7, 'a' ),
( 'A', 12, 'b' ),
( 'A', 14, 'a' ),
( 'A', 14, 'b' ),
( 'B', 7, 'a' ),
( 'B', 7, 'b' ),
( 'B', 8, 'b' ),
( 'B', 10, 'b' ),
( 'B', 12, 'a' ),
( 'B', 12, 'b' ),
( 'B', 14, 'a' ),
( 'B', 14, 'b' ),
( 'B', 16, 'b' ),
( 'C', 5, 'a' ),
( 'C', 7, 'a' ),
( 'C', 7, 'b' ),
( 'C', 8, 'b' ),
( 'C', 10, 'b' ),
( 'C', 12, 'a' ),
( 'C', 12, 'b' ),
( 'C', 14, 'a' ),
( 'C', 14, 'b' ),
( 'C', 16, 'b' ),
( 'C', 18, 'b' )
;
SELECT
[No],
[ID]
FROM
@test
WHERE
[No] IN ( 7, 14, 16)
GROUP BY
[No], [ID]
HAVING
COUNT(DISTINCT [Name]) = (SELECT COUNT(DISTINCT [Name]) FROM @test)
;
-- 結果
No ID
7 a
14 a
14 b
|