使用SQL

时间:2017-05-30 11:58:35

标签: sql sql-server

我有一个表格,如下面的结构

ID |A |B
A1 |33|
A2 |56|
A3 |56|33
A4 |66|
A5 |66|33
A6 |95|33
A7 |95|
A8 |95|
A9 |22|
A10|  |22

如何根据A和B中的值对ID进行分组,以便将单个ID分配给按A和B中的值互连的所有行?

期望的输出

ID |A |B |Grp
A1 |33|  |1
A2 |56|  |1
A3 |56|33|1
A4 |66|  |1
A5 |66|33|1
A6 |95|33|1
A7 |95|  |1
A8 |95|  |1
A9 |22|  |2
A10|  |22|2

1 个答案:

答案 0 :(得分:0)

我很确定你不能一步到位。这是一个多步骤的方法。它并不意味着高效,所以希望这是一次性操作。

使用A&中所有不同值的光标填充临时表。 B.在光标内部,您查询原始表以查找与您当前正在查看的值配对的任何值。找到一个时,将它与单独的字符串变量中的当前值连接起来。完成后,临时表应如下所示:

Grp     Values
1       |33|56|66|95|
2       |22|

然后获取所需的输出是一个简单的事情,即执行LIKE或CHARINDEX以将原始表中的A或B列与临时表中的值匹配。