【发布时间】:2012-09-11 23:45:15
【问题描述】:
有人读过 MSDN 页面上关于使用 TRANSFORM 语句创建交叉表查询的内容吗?
http://msdn.microsoft.com/en-us/library/office/bb208956(v=office.12).aspx
它包括以下断言,代码示例不支持:
您还可以包含不存在数据的固定值以创建其他列。
是的,我想创建一个数据透视表,其中包含来自预先存在的列表的一组固定的有序列标题。这是一个简化的 SQL 查询:
将 SUM(tblData.Losses) 转换为 TotalLosses 选择 tblData.LossType 来自 tblData 按 tblData.Region 分组 PIVOT tblData.Year;我想添加表格中没有的区域名称,并且我希望这些区域以特定顺序出现。是的,我可以创建一个区域列表表并将其左连接:但这也不会强加任意顺序 - 交叉表查询始终按字母顺序从左到右对列进行排序。
我可能只想添加不存在数据的任意固定值。
这是 MSDN 的信息:
语法
变换聚合函数 选择语句 PIVOT pivotfield [IN (value1[, value2[, …]])]
TRANSFORM 语句包含以下部分:
- aggfunction:对选定数据进行操作的 SQL 聚合函数。
- selectstatement:一个 SELECT 语句。
- pivotfield:要用于在查询结果集中创建列标题的字段或表达式。
- value1,value2:用于创建列标题的固定值。
...剩下的只是根据教科书数据创建一个普通的数据透视表。
所以,我的问题是:
有没有人实际使用过固定值来创建列标题?
您的 SQL 示例会很有用。
这是关于 Microsoft Access SQL 的已发布语法的问题。
感谢您没有问我为什么要这样做,而是提供冗长的 SQL 示例来回答“是否有 ANSI SQL 可以通过硬编码所有内容来完成 TRANSFORM 语句的功能?”或指出这在大型机上的 Postgres 中会更容易。
【问题讨论】: