0

今天的另一个问题。微软访问。

给定表格:
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 列等 - 每个位置对应表格的数量

Query/s 应显示上述表格的以下结果:

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 回答