Access交叉表的查询
  User表 
UserId UserName 
1      test 
2      myName 
3      hello 
Type表 
TypeId TypeName 
1      三年制大专 
2      五年制大专 
3      中专 
User_Type表 
ID  UserId TypeId Nums 
1   1      1      5 
2   1      2      3 
3   2      1      2 
4   2      3      6 
5   3      1      10 
6   3      2      1 
7   3      3      8 
我想得出的查询结果是 
UserName 三年制大专 五年制大专 中专 
test             5          3           0 
myName       2          0           6 
hello            10         1           8 
是个交叉表的查询.用的数据库是Access 
要得到这样的结果,可以使用Access中的交叉查Transform
首先,我们必须用左连接查询出
UserId UserName TypeId TypeName Nums因为User和Type表是通过User_Type表建立的联系
左连接查询如下:
 select [User].[UserName] as 地区负责人 from (([User] left join [User_Type] on [User].UserId=[User_Type].UserId)  left join [Type] on [User_Type].TypeId=[Type].TypeId)
select [User].[UserName] as 地区负责人 from (([User] left join [User_Type] on [User].UserId=[User_Type].UserId)  left join [Type] on [User_Type].TypeId=[Type].TypeId)将结果查询出来之后 就用到transform进行交叉查询.
 Transform Sum(Nums)
Transform Sum(Nums) select [Users].[UserName] as 地区负责人 from (([Users] left join [User_Type] on [Users].UserId=[User_Type].UserId)  left join [Type] on [User_Type].TypeId=[Type].TypeId)  GROUP BY [Users].UserName
select [Users].[UserName] as 地区负责人 from (([Users] left join [User_Type] on [Users].UserId=[User_Type].UserId)  left join [Type] on [User_Type].TypeId=[Type].TypeId)  GROUP BY [Users].UserName PIVOT [Type].TypeId)
PIVOT [Type].TypeId)这样结果就出来了......
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号