2009-12-22 95 views
0

你好我處理一些不友好的進口文件,其中進口爲:合併在同一個表的多個記錄的訪問

timestamp position  name 
001   2   Jon 
001   3   Bob 
001   1   Ann 
001   4   Mike 
002   1   Joe 
002   2   Sue 
003   1   Jeff 
004   5   James 
004   1   Andy 
004   2   Beth 
004   4   Mitch 
004   3   Chris 

,並想創建顯示正是如此一個新表:

timestamp position1 position2 position3 position4  position5 
001   Ann   Jon   Bob   Mike 
002   Joe   Sue 
003   Jeff 
004   Andy   Beth   Chris  Mitch  James 

通過瀏覽這個論壇最接近我已經到了一個解決方案是:

SELECT pos1.timestamp, pos1.name AS position1, pos2.name AS position2 
FROM table1 AS pos1 INNER JOIN table1 AS pos2 
ON pos1.timestamp = pos2.timestamp 
WHERE (((pos1.position)=1) AND ((pos2.position)=2)) 

我無法弄清楚如何牛逼o擴展到我的規格,任何幫助非常感謝。

+0

你最終得到了你想要的結果嗎? – 2009-12-22 17:19:14

回答

1

嘗試這樣的事情

TRANSFORM First(Table.[name]) AS FirstOfname 
SELECT Table.[timestamp] 
FROM [Table] 
GROUP BY Table.[timestamp] 
PIVOT Table.[position]; 

我該使用的MS Access交叉表查詢嚮導創建的。

也看看

What is a CrossTab Query?

一些更好的explenation。

  • 單擊創建選項卡。
  • 單擊查詢嚮導。
  • 選擇第二個選項(交叉表查詢 嚮導),點擊OK。
  • 爲您的輸入選擇表格,然後點擊 。
  • 選擇時間戳並單擊箭頭 (單)fromleft指向右側, 並點擊下一步。
  • 選擇位置並點擊下一步。
  • 名稱將剩餘的領域, 選擇第一個(默認爲計數),並 點擊下一步。
  • 打完。

它應該保存了一個名爲Table_Crosstab(或類似的東西)的查詢。 右鍵單擊並選擇設計視圖。 在視圖按鈕上,選擇Sql View。

你應該看到類似

TRANSFORM First(Table.name) AS FirstOfname 
SELECT Table.timestamp, First(Table.name) AS [Total Of name] 
FROM [Table] 
GROUP BY Table.timestamp 
PIVOT Table.position; 

從第二行刪除

, First(Table.name) AS [Total Of name] 

讓你最終

TRANSFORM First(Table.name) AS FirstOfname 
SELECT Table.timestamp 
FROM [Table] 
GROUP BY Table.timestamp 
PIVOT Table.position; 

這應該是它。保存並準備就緒。

+0

我不明白一般性(今天開始訪問)。 你可以具體說明我的具體情況以及我需要做什麼來獲得所需的輸出。謝謝。 – cubew00t 2009-12-22 11:10:25

+0

好吧,我添加了一些步驟。詢問你是否卡住了。 – 2009-12-22 11:22:37

1

你的新表是一個糟糕的設計。當傳入數據中有第六位和第七位的人時會發生什麼?當您需要提取特定人員的所有數據時,也很難處理,因爲您需要查詢五列。

相關問題