1

SQL Server Management Studio 2012 を使用しており、2300 行を超えるテーブルのピボット/クロス タブ クエリを作成したいと考えています。

テーブルには 5 つの列があります。

 - name
 - group
 - status
 - date
 - count

約 580 の異なる名前があります。

各名前は、4 つの異なるグループ (A、B、C、および D) に関連付けられています。

各グループには、はいまたはいいえの完全なステータスがあります。

完了すると、各ステータスに日付が関連付けられます。それ以外の場合、ステータスは NULL です。

カウント列は、グループ B および D にのみ適用され、整数値です。

サンプル A:

name    group  status   date    count
A.A.1     A     yes     5/23    NULL
A.A.1     B     yes     5/27    112
A.A.1     C     yes     6/4     NULL
A.A.1     D     yes     6/15    122
A.B.2     A     yes     5/25    NULL
A.B.2     B     yes     6/1     119
A.B.2     C     no      NULL    NULL
A.B.2     D     no      NULL    NULL

各名前のステータスを 11 列のフィールド値として表示しようとしています。

 - name
 - group A
 - group A date
 - group B
 - group B date
 - group B count
 - group C
 - group C date
 - group D
 - group D date
 - group D count

「名前」列には、A、B、C、および D の対応するグループ データを持つ 580 の個別の名前が含まれます。

サンプル B:

nm      grp_A   A_day   grp_B   B_day   B_ct    grp_C   C_day   grp_D   D_day   D_ct
A.A.1   yes     5/23    yes     5/27    112     yes     6/4     yes     6/15    122
A.B.2   yes     5/25    yes     6/1     119     no      NULL    no      NULL    NULL

(列名は、この質問セクションの形式に合わせて変更されています)

最終的に、結果の最初の列には 580 の個別の名前がす​​べて表示され、各グループの対応するステータス、完了日 (まだ完了していない場合は NULL)、およびグループ B と D の数が示されます。

CASE ステートメントを使用してみましたが、グループごとに 1 回名前が生成されるため、元のテーブルが 11 個のカラムにまたがって配置されます。

サンプル C:

nm     grp_A    A_day   grp_B   B_day   B_ct    grp_C   C_day   grp_D   D_day   D_ct
A.A.1   yes     5/23                                
A.A.1                    yes    5/27    112         
A.A.1                                             yes   6/4         
A.A.1                                                            yes    6/15    122
A.B.2   yes     5/25                                
A.B.2                    yes    6/1     119         
A.B.2                                             no    NULL            
A.B.2                                                             no    NULL    NULL

私は何を間違っていますか?助けてください!

-- Kモジ

4

1 に答える 1