轉自: http://www.cnblogs.com/trampt/archive/2008/05/21/1203723.html

 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表建立的联系

左连接查询如下:

Access交叉表的查询_htmlselect [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进行交叉查询.

Access交叉表的查询_htmlTransform Sum(Nums)
Access交叉表的查询_html
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
Access交叉表的查询_htmlPIVOT 
[Type].TypeId)

这样结果就出来了......

 http://files.cnblogs.com/Athrun/Cros.rar

 

申明

非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

博文欢迎转载,但请给出原文连接。