以列而不是行显示查询结果

时间:2014-08-26 10:16:39

标签: sql ms-access

我的桌子看起来像这样:

Company | FCurrency | ... | FDate      | FAmount
aaa     | EUR       | ... | 01-01-2014 | 5
aaa     | EUR       | ... | 01-02-2014 | 8
aaa     | EUR       | ... | 01-03-2014 | 9
aaa     | EUR       | ... | 01-04-2014 | -2
aaa     | USD       | ... | 01-01-2014 | 1
aaa     | USD       | ... | 01-02-2014 | 2
aaa     | USD       | ... | 01-03-2014 | 3
aaa     | USD       | ... | 01-04-2014 | 4

我想写一个查询结果如下:

Company | FCurrency | ... | 01-01-2014 | 01-02-2014 | 01-03-2014 | 01-04-2014 |
aaa     | EUR       | ... | 5          | 8          | 9          | -2         |
aaa     | USD       | ... | 1          | 2          | 3          | 4          |

我在excel中找到了一种在VBA中执行此操作的方法,但这需要很长时间(因为我有很多记录)所以我想如果访问可以为我做这件事要好得多。

在访问中我发现这篇文章:Displaying multiple columns from a single column select statement但它没有做我想要的,因为它仍然只输出每行一条记录,而不是将它们合并为一行。

同样要合并货币和公司,我知道如何处理GROUP BY,但我的问题是要有不同的“新”列,我不得不承认我在那里有点迷失。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您想要的是交叉表查询。

http://office.microsoft.com/en-ca/access-help/make-summary-data-easier-to-read-by-using-a-crosstab-query-HA010229577.aspx

您提供的示例数据/表的SQL

TRANSFORM Sum(FAmount) AS SumOfFAmount
SELECT Company, FCurrency
FROM MyTableName
GROUP BY Company, FCurrency
PIVOT FDate;