我在这里查看了一些SQL转置线程,并且它们都处理重构数据和/或数据摘要。我有一种常见的情况,与这些情况不符。 请记住,这是在MS Access中,并使用链接表(所以,没有允许更新,没有密钥或ID)。用于MS ACCESS链接表的SQL转置行和列
我有链接表。只有两行很长的数据。假设,这是一个独特的业务单元(BU)和相应的年销售额的列表。
linked_table
F1 F2 F3 F4 F5 ...
-----------------------------
row1 BU11 BU123 BU223 BU2 BU432...
row2 $2345 $0 $50.50 $234 $567.22
我需要以某种方式调换到这个这组数据:
new_table or new_query
BU Sales
---------------
BU11 $2345
BU123 $0
BU223 $50.50
BU2 $234
BU342 $567.22
...
同样,也有只有两个链接访问表数据的长排。 我只找到一个非常单调乏味的方法来解决这个问题,并且想知道是否有更好的方法来做到这一点。
STEP 1 我数据的两行分离成2个单独的查询
headers_qry
F1 F2 F3 F4 F5...
------------------------------
row1 BU11 BU123 BU223 BU2 BU432...
data_qry
F1 F2 F3 F4 F5...
------------------------------
row1 $2345 $0 $50.50 $234 $567.22...
然后我硬编码的伪“公共密钥”到两个数据集
headers_qry
F1 F2 F3 F4 F5... KEY
----------------------------------------------
row1 BU11 BU123 BU223 BU2 BU432... UNIQUE123
data_qry
F1 F2 F3 F4 F5... KEY
-----------------------------------------------
row1 $2345 $0 $50.50 $234 $567.22... UNIQUE123
然后我在该公共密钥的两个查询之间添加了一个连接,并通过数百个UNION语句手动配对了Header和Data对。哎哟!!!!
SELECT
headers.F1 AS BU_Number,
data.F1 AS BU_Sales
FROM header_data_join_qry UNION ALL
SELECT
headers.F2 AS BU_Number,
data.F2 AS BU_Sales
FROM header_data_join_qry UNION ALL
SELECT
...
headers.F100 AS BU_Number,
data.F100 AS BU_Sales
FROM header_data_join_qry UNION ALL;
这不仅是乏味和丑陋,MS Access不能处理这些多重UNION ALL查询,一旦我周围100达到它开始给SQL语句太复杂错误。
考虑到链接的源表和MS ACCESS SQL环境的局限性,有没有办法更好地处理这个问题?非常感谢!
你起身100,以适应你的样品
?我认为50是UNION中SELECT行的限制。我知道的唯一选择是VBA将记录写入临时表 - 表是永久的,数据是临时的。 – June7
看看第三个答案[here](https:// stackoverflow。COM /问题/ 7255423 /如何对模拟-逆转置式访问-2010)。也许它会帮助你 – cha
本质上分为2个子查询,我达到了100。在那之后,我还会联合这两人。这就提高了总共50个以上的ACCESS容差... –