有没有人在使用TRANSFORM语句创建交叉表查询时阅读MSDN页面?
http://msdn.microsoft.com/en-us/library/office/bb208956(v=office.12).aspx
它包括以下断言,不受代码示例支持:
您还可以包含不存在数据的固定值,以创建其他列 .
是的,我想创建一个数据透视表,其中包含来自预先存在的列表的固定 ordered 列 Headers 集 . 这是一个简化的SQL查询:
TRANSFORM SUM(tblData.Losses) As TotalLosses
SELECT tblData.LossType
FROM tblData
GROUP BY tblData.Region
PIVOT tblData.Year;
我想添加表中没有的区域名称,我希望这些区域按特定顺序显示 . 是的,我可以创建一个区域列表表并左键加入它:但是这也不会强加任意顺序 - 交叉表查询总是按字母顺序从左到右对列进行排序 .
我可能只想添加没有数据的任意固定值 .
这是MSDN的信息:
语法TRANSFORM aggfunction selectstatement PIVOT pivotfield [IN(value1 [,value2 [,...]])] TRANSFORM语句包含以下部分:aggfunction:对所选数据进行操作的SQL聚合函数 . selectstatement:SELECT语句 . pivotfield:要用于在查询结果集中创建列 Headers 的字段或表达式 . value1,value2:用于创建列 Headers 的固定值 .
......其余的只是从教科书数据创建一个普通的香草数据透视表 .
所以,我的问题是:
有没有人真正使用固定值来创建列 Headers ?
SQL的示例将非常有用 .
这是有关Microsoft Access SQL的已发布语法的问题 .
感谢您不要问我为什么要这样做,给出了冗长的SQL示例,回答了“是否有ANSI SQL通过对所有内容进行硬编码来完成TRANSFORM语句的功能?”或者指出在大型机上Postgres会更容易 .
2 回答
是的,我能够在Access中使用固定的四个值进行此操作 .
我的结果是:
从这个结果,我可以确定一些事情:
值'2_HCA_PT'和'3_HCA_PT'确实存在于我的源QComb列中 .
我的源列QComb中不存在值'1_HCA_PT'和'4_HCA_PT' .
我的源列QComb中还有其他值未在PIVOT列 Headers 中显示 . 我可以告诉因为31.38>(0.30 7.80) .
试试这个:
关键是PIVOT声明中的年份列表 . 您可能必须将'with#替换为datetime数据类型 .