从Access 2007 SQL的垂直数据(使用列中的记录作为标题)创建非聚合水平表

时间:2015-06-11 23:02:04

标签: ms-access

在有人要求之前,是的,我已将此问题搜索到第n度,无法获得Access 2007语法中所需的结果。所有解决方案看起来都很合理,但它仍然存在语法错误。 MS SQL与本机SQL有不同的语法吗?

所以这是我的数据:

表TRXCODE TRXINFO

20141002 RES 9 [57]

20141002 TRM AWCORD01

20141002 MRC ddfhrhamwss

20141002 RES 1 [49]

20141002 TRM AWTERC01

20141002 MRC ftttyyxxdsj3

20141002 RES 1 [49]

20141002 TRM AWTERC01

20141002 MRC 5556jdjsjsjd

这就是我想要制作的

TABLE RES TRM MRC

20141002 9 [57] AWCORD01 ddfhrhamwss

20141002 1 [49] AWTERC01 ftttyyxxdsj3

20141002 1 [49] AWTERC01 5556jdjsjsjd

非常类似于PIVOT功能,但我无法进行聚合。有数千行,但我只需要3个TRXCODE作为列标题。我的专栏将读取TABLE,RES,TRM和MRC。然后,TRXINFO将落在每个列标题下

如果没有在语法和聚合上失去理智,我真的很感激解决方案。我希望我也能清楚地解释我的问题广告结果。

干杯 计

1 个答案:

答案 0 :(得分:0)

这样的东西
Select r.TABLE,r.TRXINFO as 'RES', t.TRXINFO as 'TRM', m.TRXINFO as 'MRC'
From MyTable r
Left Join MyTable t On r.Table = t.table and t.TRXCODE = 'TRM' 
Left Join MyTable m On m.Table = t.table and m.TRXCODE = 'MRC'
Where r.TRXCODE = 'RES'

为其他代码添加更多联接,如果没有它们,则为一个或两个索引,无疑会提供有用的性能改进。

在将枢轴添加为功能之前,这基本上是旧学校进行枢轴类型查询的方式。

如果可能没有“RES”记录,您可以进行更多工作 如果您知道总有一个特定的TRXCODE,那么只需使用它而不是'RES'

完全外部加入(或者等效,但是对于五次加入会很痛苦。)

或者有一个偷偷摸摸的Pete解决方案,你基本上首先创建一个像

这样的查询
Select Distinct [Table], 'XXX' as 'TRXCODE', 'Do Not Care' as TRXINFO
From MyTable

然后将六个代码加入到该代码中,然后从中查询以删除XXX列。