2016-06-28 229 views
0

2表1與其它客戶端與ACCNO信息將多個行到一個 「備忘錄」 爲nvarchar(最大)

table 1: 
file, accno <- nvarchar(50) 
t1, 123a 
t1, 456a 
t1, 789a 
t2, 012b 
t3, 345c 
t3, 678c 

我想表1轉移到表2

table 2: 
file, accno <- nvarchar(max) 
t1, 123a 
    456a 
    789a 
t2, 012b 
t3, 345c 
    678c 

我可以這是德爾菲很容易,但它會花費將近6小時,因爲即時過濾接近300000記錄在表1

是否有一個SQL查詢,可以使這超快,即使需要5分鐘

+0

以修復向我們顯示您的查詢 –

+0

456a和其他行的第一列是什麼? –

回答

1
SELECT 
    DISTINCT [File] 
    ,STUFF(
     (SELECT ',' + accno 
     FROM 
      TableName it 
     WHERE it.[File] = ot.[File] 
     FOR XML PATH('')) 

     ,1,1,'') AS [Memo] 
FROM 
    TableName ot 

你可以適應這個,但是這會創建一個逗號分隔的你的accno列表,我認爲它是你正在尋找的那種?您可以使用備註字段中的行尾進行修改,而不是使用逗號。

+0

'B10553 \t xxx01 xxx1002 ,2xxxxx1001 B10556 \t xxx7002 xxxxx67003 ,15xxxx02 B10557 \t xxx25001 '這是林得到了它完美的作品,但我只需要擺脫' '部分 – Troz

+0

爲http: //stackoverflow.com/questions/38093988/update-row-base-on-distinct-stuff-path-query馬特請檢查這一個 – Troz

0

ķ所以事實證明,在端部上的滑稽gizmozs是回車,我設法通過修改查詢與下面

SELECT 
    DISTINCT fileref, stuff(
     (
     Select '; ' + IsNull(D2.viaccno, '') 
     From vi_accno As D2 
     Where D2.vifileref = A.FileRef 
     For Xml Path(''), type 
     ).value('.', 'nvarchar(max)') 
     , 1, 2, '') As SelectedComments 
FROM 
    vtindex a 

由於@馬特的幫助和響應