-1

次の構造とデータを持つテーブルがあります。

ID_A | ID_B
 A      1
 A      2
 B      1
 B      2
 C      1
 C      3
 D      1
 D      2
 D      3

特定の A ID に対して存在する B のさまざまなセットを見つける必要があります。この例では、結果は次のようになります。

  1. 1,2
  2. 1,3
  3. 1,2,3

カウントも取得できれば、それは素晴らしいことです:

  1. 1,2 [2]
  2. 1,3 [1]
  3. 1,2,3 [1]

質問が十分に明確であることを願っています。ありがとう!

4

1 に答える 1

3

SQL フィドル

MS SQL Server 2012 スキーマのセットアップ:

create table YourTable
(
  ID_A char(1),
  ID_B int
)

insert into YourTable values
( 'A',      1),
( 'A',      2),
( 'B',      1),
( 'B',      2),
( 'C',      1),
( 'C',      3),
( 'D',      1),
( 'D',      2),
( 'D',      3)

クエリ 1 :

select T.ID_B,
       count(*) as C
from
  (
  select T1.ID_A,
         (
         select ','+cast(T2.ID_B as varchar(10))
         from YourTable as T2
         where T2.ID_A = T1.ID_A
         order by T2.ID_B
         for xml path(''), type
         ).value('substring(text()[1], 2)', 'varchar(max)') as ID_B
  from YourTable as T1
  group by T1.ID_A
  ) as T
group by T.ID_B

結果

|  ID_B | C |
-------------
|   1,2 | 2 |
| 1,2,3 | 1 |
|   1,3 | 1 |
于 2013-01-11T11:56:38.633 に答える