2012-05-21 23 views
1

我有叫大師2007年Access表包含,以及許多許多人,如下列:將多個列到一個列在新表

Master.UID, 
Master.[Team Comments], 
Master.[Judy Comments], 
Master.[Sue Comments], 
Master.[Paul Comments], 
Master.[CSE Comments], 
Master.[CSE Name], 
Master.[Sue Comments1], 
Master.[David Comments] 

我想創建一個新的表名爲評論它看起來像這樣:

CommentID 
UID 
Name 
Comment 

有幾個問題在這裏:

  1. 有兩個蘇評論colu MNS;這些不應該連接在一起,而是爲每個條目分別放置一行。
  2. 有一個例外,名稱列的值在主柱
  3. 異常的名稱是CSE註釋和CSE名
  4. UID是外鍵的主表
  5. 跳過任何空白的評論字段,其中有很多。

正如你所看到的,我試圖對一個craaaaaazy大表應用一點正常化。

TIA!

+1

「craaaaaazy大桌子」 - 喜歡它。 – SQLMason

回答

2

這顯然是一次性動作,所以沒有必要在中單獨做一個查詢。
這意味着它實際上非常簡單,因爲您可以爲每個值構建一個單獨的查詢並且只需一個接一個地執行。

基本模式如下所示(對於Team Comments列)。

insert into comments (UID, Name, Comment) 
select UID, 'Team', [Team Comments] from master where [Team Comments] is not null 

(請注意,我假設CommentID是自動值字段,所以我沒有處理它的話)

對於兩個Sue Comments列,你只是執行兩個在一排類似的查詢:

insert into comments (UID, Name, Comment) 
select UID, 'Sue', [Sue Comments] from master where [Sue Comments] is not null 

insert into comments (UID, Name, Comment) 
select UID, 'Sue', [Sue Comments1] from master where [Sue Comments1] is not null 

,併爲「CSE」欄目......我明白了CSE CommentsName不固定作爲其他例子,但它守ld取自CSE Name列。
對不起?如果是,那麼查詢需要看起來像這樣:

insert into comments (UID, Name, Comment) 
select UID, [CSE Name], [CSE Comments] from master where [CSE Comments] is not null 
+0

Duh。我非常堅定地走在一個查詢中這樣做的道路上,顯而易見的簡單答案讓我無法迴避。謝謝! – morganpdx

相關問題