小编Ada*_*dam的帖子

查询以规范化表/组合行文本

我有一个表(称为 oldTable),其中的列如下:

ID (int),Rank (int),TextLineNumber (int),SomeText (varchar)

主键是多部分的:ID+Rank+TextLineNumber。

我正在尝试将它转换/加入另一个表(称为 newTable),其中的列如下:

ID (int)、Rank (int)、CombinedText (varchar)

主键是 ID+Rank。

新表上的 ID 和 Rank 已经填充,但我需要一个查询来更新 newTable 的 CombinedText 列,并考虑以下注意事项:

  1. 新表给定的Rank在旧表上可能不存在,在这种情况下,它需要从旧表中选择不大于新表上的等级的最高可用等级。
  2. CombinedText 列是旧表中“SomeText”列的字符串串联,使用从第一个考虑中找到的 Rank 按“TextLineNumber”的顺序串联。

以下是一些示例数据:

旧 - http://i54.tinypic.com/jq0vmx.png

新 - http://i53.tinypic.com/dhfyn8.png

如果重要的话,我正在使用 MSSql 2005。我目前使用 T-SQL 和 while 循环执行此操作,但它已成为一个严重的性能瓶颈(10000 行大约需要 1 分钟)。

编辑:CSV 中的扩展示例数据:
旧:

ID,Rank,LineNumber,SomeText
1,1,1,the qu  
1,1,2,ick br  
1,1,3,own  
1,2,1,some te  
1,2,2,xt  
1,3,1,sample  
2,7,1,jumped ov  
2,7,2,er the  
2,7,3,lazy  
2,13,1,samp  
2,13,2,le text  
3,1,1,ABC  
3,1,2,DEF  
3,1,3,GHI  
3,1,4,JKL  
3,50,1,XYZ
Run Code Online (Sandbox Code Playgroud)

新的:

ID,Rank,CombinedText
1,2,some text
2,13,sample text
2,14,sample …
Run Code Online (Sandbox Code Playgroud)

performance normalization join sql-server query

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

join ×1

normalization ×1

performance ×1

query ×1

sql-server ×1