2016-06-28 172 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 

由于@马特的帮助和响应