使用Access帮助创建交叉表查询

时间:2011-07-11 10:20:08

标签: ms-access inner-join crosstab

我正在尝试进行交叉表查询(使用访问表),但是我迷失了编写内部联接语句。 我的最终结果假设是“QueryResult”。

表1持有基金信息, 表2是基金拥有的数据类型 表3是从表2中的数据代码到类型数据的转换,表4保存数据。

表1

FundID FundName
1      Fund1
2      Fund2
3      Fund3
4      Fund4
5      Fund5
6      Fund6
7      Fund7

表2

TypeID TypeName
1      Balance
2      Yield
3      Fees
4      Deposits
5      Withdraws

表3

CodeID TypeID    
KT111   1
KT112   2
KT113   3
KT115   3
KT116   4
KT117   4
KT118   5
KT119   5

表4

CodeID FundID DataVal
KT111  1      1000
KT116  2      40
KT118  3      30
KT119  3      30
KT118  2      10
KT119  2      50
KT111  2      3000
KT111  3      2000
KT112  1      1.5
KT112  2      1.0
KT112  3      0.5

P.S:Table4包含很多行,然后在这里显示我不需要的代码。

QueryResult中

FundID  Balance Yield Fees Deposits Withdraws
1        1,000   1.5   555   40     60
2        3,000   1.0   155   20     60
3        2,000   0.5   255   70     60

获取查询结果的正确语句是什么? (我迷失在内心联盟......) 是否还有一种方法可以对一些数据求和,并显示table4中其他数据的值(不加总和)?

谢谢!

1 个答案:

答案 0 :(得分:0)

虽然我不完全确定您的所有要求,但这可能会让您开始:

TRANSFORM Sum(d.dataval) as DataValue
SELECT d.fundid
FROM 
((Data d
INNER JOIN fund f ON d.fundid = f.fundid)
INNER JOIN  code c ON d.codeid = c.codeid)
INNER JOIN type t on c.typeid = t.typeid
GROUP BY d.fundid
PIVOT T.Typename

结果:

fundid  Balance Deposits    Withdraws   Yield
1       1000                            1.5
2       3000    40      60      1
3       2000            60      0.5