2014-02-07 74 views
1

我有這個表:把垂直表爲水平在Access

+----+------+ 
| ID | NAME | 
+----+------+ 
| 1 | A | 
| 1 | B | 
| 1 | C | 
| 2 | A | 
| 2 | P | 
| 2 | D | 
| 2 | X | 
| 3 | F | 
| 3 | 45 | 
+----+------+ 

,我想將它轉化到這一點。 (該ID將是唯一的,爲同一ID的每一個反覆出現的ID名稱將在一個新的領域進行添加。

+----+------+-------+-------+-------+ 
| ID | NAME | Name1 | Name2 | Name3 | 
+----+------+-------+-------+-------+ 
| 1 | A | B  | C  |  | 
| 2 | A | P  | D  | X  | 
| 3 | F | 45 |  |  | 
+----+------+-------+-------+-------+ 

是否有訪問做一個快速的方法。VBA代碼就可以了。我有嘗試透視和轉置(在Excel中)都不起作用,或者不給我期望的結果。像(第一行Name3)的空單元格是可以的。任何建議,鏈接或代碼片段都非常感謝!

回答

2

這將給你類似的東西:

TRANSFORM FIRST([Name]) AS FirstOfName 
SELECT ID 
FROM 
    (
     SELECT t1.ID, t1.Name, 'Name' & Format(COUNT(*),"000") AS NewName 
     FROM 
      YourTable AS t1 
      INNER JOIN 
      YourTable AS t2 
       ON t1.ID = t2.ID 
        AND t1.Name >= t2.Name 
     GROUP BY t1.ID, t1.Name 
    ) 
GROUP BY ID 
PIVOT NewName 

對於[YourTable]中的測試數據

ID Name 
-- ---- 
1 A 
1 B 
1 C 
2 A 
2 P 
2 D 
2 X 
3 F 
3 45 

返回

ID Name001 Name002 Name003 Name004 
-- ------- ------- ------- ------- 
1 A  B  C   
2 A  D  P  X  
3 45  F     
+0

那是快,太棒了!字段的順序是Name1,Name10,Name11,Name 12,... Name19,Name2 ... 有可能改變它嗎? – Michael

+0

@Michael我已經更新了我的答案。 –