次の結果を生成するクエリがあります。
表1:
degree_code  occupation_code  degree_completions  degree_level
1.0000       20-2021          10                  1
1.0000       20-2022          10                  1
1.1051       52-2095          2                   3
1.1051       52-2095          41                  2
1.5010       15-1100          2                   3
使用する必要があるカスタム カテゴリに degree_level を関連付ける別の小さなルックアップ テーブルがあります。
テーブル2
degree_level  degree_level_recode
1             AADEGREE
2             AADEGREE
3             BACHDEGREE
次の形式を報告する最初のクエリの出力を作成したいと思います。
degree_code  occupation_code  degree_completions  degree_level AADEGREE BACHDEGREE
1.0000       20-2021          10                  1            10       0
1.0000       20-2022          10                  1            10       0
1.1051       52-2095          2                   3            3        0
1.1051       52-2095          41                  2            0        41
1.5010       15-1100          2                   3            2        1
基本的に、元のクエリに新しい一時的な recode フィールドを作成します。このフィールドは、degree_level_recode と一致する場合にその下に degree_completions を報告します。一致しない場合は 0 を入力します。これは非常に単純化されています。クエリの各要素の他のフィールドに対して、recode フィールドで操作を実行します。
参照用に degree_completions フィールドを示しましたが、明らかな冗長性の理由から、最後のクエリでは省略します。
比較チェックにはCASEステートメントなどを使用する必要があると考えていますが、SQLは初めてです。
編集:
以下のChaの回答を参照して、改訂されたtable1出力を取得します(再コードをマッピングした後):
degree_code  degree_level  degree_completions  degree_level_recode
01.0601      2             11                  LESSCOLL
01.0601      3             22                  AADEGR
01.0605      2             3                   LESSCOLL
次のコードを検討してください (table2 は編集の上で参照されます)。
SELECT degree_code
    ,degree_level
    ,[LESSCOL] AS LESSCOL
    ,[AADEGR] AS AADEGR
    ,[BACHDEGR] AS BACHDEGR
    ,[MADEGR] AS MADEGR
    ,[DOCDEGR] AS DOCDEGR
FROM 
    (
    SELECT degree_code
        ,table1.degree_level
        ,degree_level_recode
        ,degree_code
     FROM table1
          ,table2 
     WHERE table1.degree_level = table2.degree_code
     ) AS p
     PIVOT
         (
         SUM (degree_completions)
         FOR degree_level_recode IN ([LESSCOL], [AADEGR], . . .)
         ) AS pvt
これらの結果が生成されます。
degree_code  degree_level  LESSCOL  AADEGR  BACHDEGR  MADEGR  DOCDEG  
01.0601      2             NULL     NULL    NULL      NULL    NULL
01.0601      3             NULL     22      NULL      NULL    NULL
01.0505      2             NULL     NULL    NULL      NULL    NULL
私はに到達しようとしています:
degree_code  degree_level  LESSCOL  AADEGR  BACHDEGR  MADEGR  DOCDEG  
01.0601      2             11       NULL    NULL      NULL    NULL
01.0601      3             NULL     22      NULL      NULL    NULL
01.0505      2             3        NULL    NULL      NULL    NULL
さらに、NULL を 0 に置き換えます。