2016-06-29 53 views
0

Combine multiple rows into one "memo" nvarchar(max)更新行基本,路徑查詢

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

如何使用上面的查詢對錶1匹配更新每個ACCNO行繼續fileref = fileref

表1: ID,fileref,客戶端,地址,登錄號

+1

請提供數據樣本,DDL用於創建表格,預期輸出。 – gofr1

回答

1

基於給定的數據,我可以爲您提供這樣的:

UPDATE t 
SET accno = p.accno 
FROM [table 1] t 
INNER JOIN (
SELECT 
    DISTINCT fileref, stuff(
     (
     Select char(13)+char(10) + IsNull(D2.viaccno, '') 
     From vi_accno As D2 
     Where D2.vifileref = A.FileRef 
     For Xml Path(''), type 
     ).value('.', 'nvarchar(max)') 
     , 1, 2, '') As accno 
FROM 
    vtindex a 
) as p 
ON p.fileref= t.fileref 
+0

查詢執行得很好,但結果與表t中的每一行都包含相同的accno。 – Troz

+0

然後提供產生您的查詢的數據樣本以及'table_1'中的數據樣本。 – gofr1

+0

沒關係我把錯誤的表[表1]改變爲vtindex,現在他們的查詢速度提高了10倍,並且從獨特查詢更新了vtindex,感謝您的幫助 – Troz