【发布时间】:2013-11-07 14:56:30
【问题描述】:
这是表格的简化视图。抱歉,我无法保存这张桌子的照片,所以希望没问题。
c1
___c2
1____a
1____b
2____a
2____b
2____c
2____d
3____e
3____a
4____z
5____d
结果是由于C2列的关系, 第 1 组将包括 1、2、3、5(因为它们具有重叠的 c2 值,基本上说明 a=b=c=d=e) 第 2 组将包括 4
我有数百万行包含此类数据,目前有一个游标作业运行 x 次来构建这些组。我能够想象这应该如何工作,但我无法构建一个可以提取这种关系的查询。 有什么建议么? 谢谢
【问题讨论】:
-
这种类型的操作相当复杂,可能需要诸如临时表和循环或递归 cte 之类的东西来生成所有组。为什么要将光标作业压缩为单个查询?
-
我可以在这里填写所有组:sqlfiddle.com/#!3/cf29c/5。将其转换为组集更加复杂,但应该可以使用另一个临时表和循环。
-
感谢您的 cmets。选择不同的路线有两个原因。 1. 运行需要一个多小时, 2. 我们创建了一个 x 重复的光标代码块,而不是 do while 循环。意思是,我们将“光标代码”写了 3 次,如果我们在多个组中找到一个字母,那么我们添加另一个重复的光标代码块。我认为找出一种循环匹配功能直到匹配完成的方法会更有效。不过,您为我提供了一些额外的想法。谢谢。