SQL将Grouped数据合并为一个新的唯一值

时间:2017-09-29 04:00:49

标签: sql-server tsql

我正在导入一些包含文本字段的数据,该字段通常对每个子记录都有相同的信息。

e.g。

ID  |  PID | VALUE 
1   |  1   | The quick brown fox
2   |  1   | The quick brown fox
3   |  1   | The quick brown fox
4   |  1   | The quick brown fox

但是,由于它是自由文本字段,因此有时内容会被修改:

2   |  1     | The quick*est* brown fox
3   |  1     | The quick brown fox *jumped over the log*

数据应该与父实体一起使用,因此我需要获得可以更新父记录的数据的合并版本,例如:

PID | Value
1   | The quickest brown fox jumped over the log

当然,我可以使用游标循环数据并创建合并结果,但是我要导入1000条记录,并希望将其作为导入批处理的一部分。

非常感谢任何帮助或见解!

2 个答案:

答案 0 :(得分:0)

您的任务基本上是更新每个id组的最小PID(初始记录),其中包含给定{的最大id(最新记录)的值{1}}组。

PID

enter image description here

答案 1 :(得分:0)

听起来我想要做一些相当复杂的字符串差异/合并。 SQL Server不进行复杂的字符串操作,你几乎只限于连接,插入(东西)和一些其他基本功能。合并不是其中之一。

为您编写CLR过程可能是值得的,因为您可以访问更广泛的字符串合并工具like this one。但是,您可能对结果不满意。如果发生冲突,你会怎么做?例如

The quick brown fox jumped
The quick brown fox jumps
The quick brown fox danced

您需要手动确定此类事情的结果。最好只将与每个父ID相关联的所有字符串的不同列表导入到一个单独的表中,然后可以查找该表,或者在稍后的日期与一些人为监督合并。