ACCESS交叉表(行列互换)

来源:互联网 发布:2016进出口数据 编辑:程序博客网 时间:2024/06/12 20:28

用于创建交叉表查询?(交叉表查询:这种查询用于对记录计算总计、平均值、计数或其他类型总计,然后按照两类信息对结果进行分组:一组信息分布在数据表的左侧,另一组分布在数据表的顶端。)。

语法

TRANSFORM aggfunction
selectstatement
PIVOT pivotfield [IN (value1[, value2[, ...]])]

TRANSFORM 语句包含以下部分:

 
部分说明aggfunction对所选数据进行操作的 SQL 聚合函数。selectstatementSELECT 语句。pivotfield要用来在查询的结果集中创建列标题的字段或表达式?(表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)。value1, value2用于创建列标题的固定值。

说明

使用交叉表查询汇总数据时,从指定的字段或表达式中选择值作为列标题,以便可以用更紧凑的格式查看数据(而不是使用选择查询?(选择查询:就表中存储的数据提出问题,然后在不更改数据的情况下以数据表的形式返回一个结果集。))。

TRANSFORM 是可选的,但如果包括此语句,则是 SQL 字符串?(SQL 字符串/语句:用于定义 SQL 命令(如 SELECT、UPDATE 或 DELETE)的表达式,可以包含子句(如 WHERE 和 ORDER BY)。SQL 字符串/语句通常用在查询和聚合函数中。)中的第一个语句。它在指定用作行标题的字段的 SELECT 语句以及指定行分组的 GROUP BY 子句之前。您可以选择包括其他子句,例如指定附加选择或排序条件的 WHERE 子句。您还可以在交叉表查询中使用子查询?(子查询:在另一个选择查询或操作查询内的 SQL SELECT 语句。)作为谓词(尤其是 WHERE 子句中的谓词)。

pivotfield 中返回的值用作查询结果集中的列标题。例如,在交叉表查询中对月销售额的销售数字进行透视时,会创建 12 个列。可以将 pivotfield 限制为使用可选的 IN 子句中所列的固定值(value1, value2)来创建标题。您还可以包括数据不存在的固定值来创建附加列。

一表aTable,字段如下:

aVer,aCode,Price
12 F01 10
12 F02 3
.....
共有记录从F01顺序到F80,aVer都是一样的'12',我用交叉查询将纵向转成一行横向

Transform sum(price) select aVer from aTable group by aVer Pivot aCode

可以得到如下一行记录:
aVer F01 F02 F03.....F80

Transform sum(price) select aVer from aTable group by aVer Pivot iif(len(aCode)=3,space(1)+aCode,aCode)


0 0
原创粉丝点击