交叉表查询:使用固定值来创建附加列(Crosstab Queries: using fixed va

2019-09-22 14:41发布

有没有人阅读使用TRANSFORM语句创建交叉表查询的MSDN页面?

http://msdn.microsoft.com/en-us/library/office/bb208956(v=office.12).aspx

它包括以下断言,不支持的代码示例:

您还可以包括其数据不存在创造额外的列固定值。

是的,我想创建一个数据透视表从一个预先存在的列表中选择一个固定的有序集合列标题。 这里有一个简单的SQL查询:

      TRANSFORM SUM(tblData.Losses)作为TotalLosses      SELECT tblData.LossType      从tblData      GROUP BY tblData.Region      PIVOT tblData.Year; 

我想补充一点,不在表区域名称和我想的区域出现在一个特定的顺序。 是的,我可以创建一个区域房源表和左加入它:但不会强加任意顺序,或者 - 交叉表查询始终对列进行排序从左向右按字母顺序。

而且我可能只是想添加针对存在数据的任意固定值。

下面是MSDN的信息:

句法

TRANSFORM aggfunction selectstatement PIVOT 透视字段 [IN( [1, 值2 [,...]])]

变换语句具有以下几个部分:

  • aggfunction:即在所选择的数据进行操作的SQL聚合函数。
  • selectstatement:SELECT语句。
  • 透视字段 :您要使用查询的结果集创建列标题的字段或表达式。
  • 值1, :用来创建列标题的固定值。

...剩下的就是刚刚从教科书数据创建一个普通的香草透视表绒毛。

所以,我的问题是:

有没有人实际使用固定值来创建列标题?

你的SQL的样品将是有益的。


这是有关Microsoft SQL访问发布的语法问题。

谢谢你没有问我为什么要做到这一点,给予该回答的问题冗长的SQL实例“ 是否有ANSI SQL,做什么用硬编码的一切TRANSFORM语句呢,? 或指出,这将是更容易的Postgres在大型机上。

Answer 1:

是的,我能够用一组固定的四个值的做到这一点的访问。

TRANSFORM Sum([Shape_Length]/5280) AS MILES
SELECT "ONSHORE" AS Type, Sum(qry_CurYrTrans.Miles) AS [Total Of Miles]
FROM qry_CurYrTrans
GROUP BY "ONSHORE"
PIVOT qry_CurYrTrans.QComb IN ('1_HCA_PT','2_HCA_PT','3_HCA_PT','4_HCA_PT'); 

我的结果是:

| Type     | Total Of Miles  | 1_HCA_PT  | 2_HCA_PT  | 3_HCA_PT  | 4_HCA_PT |
| ONSHORE  | 31.38           |           | 0.30      | 7.80      |          |

从这个结果,我能确定的几件事情:

  • 值“2_HCA_PT”和“3_HCA_PT”不列QComb从我的源存在。
  • 值“1_HCA_PT”和“4_HCA_PT” 列QComb从我的源存在。
  • 有列QComb从我的源未在枢轴列标题为代表的附加价值。 我可以告诉大家,因为31.38>(0.30 + 7.80)。


Answer 2:

尝试这个:

TRANSFORM Sum(tblData.Losses) AS TotalLosses
SELECT tblData.Region, tblData.LossType
FROM tblData
GROUP BY tblData.Region, tblData.LossType
PIVOT tblData.Year In ('2001','2000');

关键是多年从事PIVOT语句列表。 您可能需要更换“与#的日期时间数据类型。



文章来源: Crosstab Queries: using fixed values to create additional columns