2

以下のような値を持つcategoryという名前のテーブルがあります。

CategoryId | 値| 国旗

1 25 a
2 26 a
3 27 a
1 28 m
2 23 m
1 36 p
2 33 p

ここで、このテーブルに存在する行を、フラグに基づいて列に転置したいと思います。

CategoryId | aValue | mValue | P値12528
36
2 26 23 33
3 27 null null

カテゴリIDに基づいて結合しようとしていますが、クエリで左外部結合を使用している場合でも、結果セットで一致したレコード(内部結合)を取得しています。

私の質問:

SELECT 
  A.CategoryId, 
  A.Value AS actual, 
  B.Value AS projected, 
  C.Value AS Manual
FROM ((a AS A left JOIN b AS B ON A.categoryid=B.categoryid) 
  left JOIN c AS C ON A.categoryid=C.categoryid) 
WHERE (((A.flag)="a") and ((B.flag)="p") and ((C.flag) ="m"))

3つの異なるテーブルにデータがある場合、適切な結果が得られます。

自己結合を使用するときに行を列に転置するための最良の方法を確認したいだけです...

ありがとう、バラニ

4

1 に答える 1

3

これを試して:

SELECT CategoryId, 
       MIN(SWITCH(YourTable.Flag = 'a',Value)) AS aValue,
       MIN(SWITCH(YourTable.Flag = 'm',Value)) AS mValue,
       MIN(SWITCH(YourTable.Flag = 'p',Value)) AS pValue
FROM YourTable
GROUP BY CategoryId
于 2011-09-20T16:17:22.033 に答える