在sql中创建递归查询

oalqel3c  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(395)

我有这样的数据:
人a与人b有关系,人a与人c有关系
b与d和e有关系。

我想在sql server(a,b,c,…)和(b,d,e,…)中按组查看结果

我尝试过寻找递归,但没有得到这个实现。
我需要用sql来做这个。
谢谢你的帮助。

vdgimpew

vdgimpew1#

不用递归cte就可以实现。使用以下命令尝试 string_agg 以及 concat . 这是演示。

select
  concat(columnA, ', ', string_agg(columnB, ', ')) as columnC
from myTable
group by
  columnA

输出:

|columnC|

* -------*

|A, B, C|
|B, D, E|

在sql server 2012中,您可以使用 XML PATH 如下所示

select
  concat(
  columnA, ',',
  stuff((
            select ', ' + columnB
            from myTable m1
            where m1.columnA = m2.columnA
            for xml path('')
        ), 1, 1, ''
    )) as columnC
from myTable m2
group by
  columnA

相关问题