首先,感谢能提供帮助的任何人,我希望这对那些有知识的人来说是一个简单的问题。
我有以下形式的数据:
LeaseID | ChargeID
1 | 1
1 | 2
2 | 3
3 | 4
3 | 5
3 | 6
即LeaseID 1有2个ChargeID
我该如何在Access SQL中查询它,以便将数据反映为
LeaseID | ChargeID | ChargeID | ChargeID
1 | 1 | 2
2 | 3
3 | 4 | 5 | 6
我知道我最多只能有255个列,但这不是问题,因为永远不会有255个列,但是列数应该随着给定租约上的最大ChargeIDs数量而增加。
我认为这与Transform / Pivot有关,但一直无法使其正常工作。我不断收到“交叉表错误太多”
谢谢
答案 0 :(得分:1)
考虑一个涉及登台表的两步过程:
表查询 (在大表上使用性能较慢的相关子查询)
SELECT t.LeaseID, t.ChargeID, 'ChargeID' & (SELECT count(*) FROM LeaseCharge sub
WHERE sub.LeaseID = t.LeaseID
AND sub.ChargeID <= t.ChargeID) As Rank
INTO myStagingTable
FROM myTable t;
跨表查询
TRANSFORM MAX(s.ChargeID) As MaxChargeID
SELECT s.LeaseID
FROM myStagingTable s
GROUP BY s.LeaseID
PIVOT s.[Rank]
-- LeaseID ChargeID1 ChargeID2 ChargeID3
-- 1 1 2
-- 2 3
-- 3 4 5 6