0

今日のもう一つの質問。MS アクセス。

指定されたテーブル:
FormsList

FormID LocationID FormTypeID FormDate  
1 001 001 21.11.2012  
2 002 002 20.11.2012  
3 001 003 16.11.2012  
4 001 001 13.12.2012  
4 003 004 13.12.2012  

...
ロケーション一覧

LocationID LocationName  
001 FirstLocation  
002 SecondLocation  
003 ThirdLocation  
004 FourthLocation  
...  

フォームの種類

FormTypeID FormType  
001 "C"  
002 "R"  
003 "F"  
004 "X"  
...  

クロス集計クエリ、または次のテーブルを取得するための何かが必要です。

  • 列 1 ヘッダー: LocationID.
  • 列 2、3、4 などのヘッダー: "C"、"R"、"F"、"X"。
  • 列 1 - LocationsList のすべてのLocationsID
  • 列 2、3、4、5 など - 各場所に対応するフォームの数

クエリは、上記のテーブルに対して次の結果を表示する必要があります。

LocationID "C" "R" "F" "X"  
001 2 0 0 0  
002 0 1 0 0  
003 0 0 0 1  
004 0 0 0 0  

ありがとうございました。

4

1 に答える 1

1

以下を使用してデータを変換できるはずです。

TRANSFORM Count(FormsList.FormTypeID)
select LocationsList.LocationId
from (LocationsList
inner join FormsList
  on LocationsList.LocationId = FormsList.LocationId)
inner join FormTypes
  on FormsList.FormTypeId = FormTypes.FormTypeId
GROUP BY LocationsList.LocationId
PIVOT FormTypes.FormType

編集、すべての場所が必要な場合は、次を使用する必要がありますLEFT JOIN

TRANSFORM Count(FormsList.FormTypeID)
select LocationsList.LocationId
from (LocationsList
left join FormsList
  on LocationsList.LocationId = FormsList.LocationId)
left join FormTypes
  on FormsList.FormTypeId = FormTypes.FormTypeId
GROUP BY LocationsList.LocationId
PIVOT FormTypes.FormType
于 2013-03-19T12:25:14.640 に答える