2017-04-21 44 views
0
ID | NAME | Description 
A A  Value1 
A A  Value2 
B B  Value1 
C C  Value1 
C C  Value2 
C C  Value3 
D D  Value1 
D D  Value2 
D D  Value3 
D D  Value4 
D D  Value5 
D D  Value6 

我有這個輸入,我想把它轉換成這個。旋轉與預定義的標題表

ID | NAME | Desc1 | Desc2 | Desc3 | Desc4 | Desc5 | Desc6 
A A  Value1 Value2 
B B  Value1 
C C  Value1 Value2 Value3 
D D  Value1 Value2 Value3 Value4 Value5 Value6 

我已經嘗試過做透視和轉換。但不會去任何地方。

transform max([Description]) 
select ID, [Description] 
from TableName 
Group ID 
Pivot [Description] 

任何幫助將apprecaited。

+1

可能的重複[將多行轉換爲具有唯一鍵的列](https://stackoverflow.com/questions/45898593/transform-multiple-rows-into-columns-with-unique-key) – June7

回答

1

名稱是保留字。不應該使用保留字作爲任何名稱。

一種方法使用DCount()。該表將需要一個唯一的標識符字段 - 自動編號應該爲此服務。構建查詢:

SELECT Table1.ID, Table1.Name, Table1.Description, Table1.NumID, 
DCount("*","Table1","ID='" & [ID] & "' AND NumID<" & [NumID])+1 AS GrpNum 
FROM Table1 
ORDER BY Table1.ID, Table1.NumID; 

然後在CROSSTAB中使用該查詢。

TRANSFORM First(Query3.Description) AS FirstOfDescription 
SELECT Query3.ID, Query3.Name 
FROM Query3 
GROUP BY Query3.ID, Query3.Name 
PIVOT Query3.GrpNum; 

但是,在查詢非常大的數據集時,域聚合函數可以執行得很慢。

VBA過程可以在pivot結構中將記錄寫入'temp'表(表是永久的,數據是臨時的)。對於大型數據集,此代碼執行速度可能比使用域聚合函數的查詢快。

可以使用自動編號字段將文本文件導入到「temp」表中,然後運行建議的查詢。

+0

好的,會嘗試它在這裏再次更新 –

+0

由於該表正在使用原始txt文件。我不認爲這會適合我在表格中添加自動編號。還有其他方法嗎? –

+0

查看編輯答案。 – June7