我有一张这样的表:
RowID; ListDescription1; ListNormalisedDescription1;
1 XXXX YYYY NULL
2 ZZZZZ NULL
我做了一个复杂的转换/规范化(删除空格,替换空格和拆分)并设法使相同的数据变成:
RowID; NormalisedItemDescrption1;
1 XXXX
1 YYYY
2 ZZZZZ
您可以看到这两个表之间的共性是RowID。
我想根据表更新ListNormalisedDescription1,所以变成:
RowID; ListDescription1; ListNormalisedDescription1;
1 XXXX YYYY XXXX;YYYY
2 ZZZZZ ZZZZZ
请注意,分隔符位于';'
如果可能,我试图避免光标。
由于
答案 0 :(得分:2)
假设SQL Server 2005+,请使用:
UPDATE table
SET ListDescription1 = STUFF(ISNULL(SELECT ' ' + x.NormalisedItemDescrption1
FROM NORMALIZED_TABLE x
WHERE x.rowid = rowid
GROUP BY x.NormalisedItemDescrption1
FOR XML PATH ('')), ''), 1, 2, ''),
ListNormalisedDescription1 = STUFF(ISNULL(SELECT ';' + x.NormalisedItemDescrption1
FROM NORMALIZED_TABLE x
WHERE x.rowid = rowid
GROUP BY x.NormalisedItemDescrption1
FOR XML PATH ('')), ''), 1, 2, '')