【问题标题】:Creating a recursive query in SQL在 SQL 中创建递归查询
【发布时间】:2020-09-28 03:03:31
【问题描述】:

我有这样的数据:

  • A 与 B 有关系,A 与 C 有关系
  • B 与 D 和 E 有关系。

我想在 SQL Server (A, B ,C,...) 和 (B,D,E,...) 中查看组中的结果

我尝试过递归,但没有实现。

我需要在 SQL 中执行此操作。

感谢您的帮助。

【问题讨论】:

    标签: sql recursion sql-server-2012


    【解决方案1】:

    你可以在不使用递归 cte 的情况下实现。使用string_aggconcat 尝试以下操作。这是demo

    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
    

    【讨论】:

    • 感谢您的帮助。您能帮我在 sql server 2012 或 2008 中替换 string_agg 吗?
    • @DanhTranQuoc 更新了我的答案。如果你喜欢它,请点击对勾接受它。谢谢
    • 感谢您的帮助
    猜你喜欢
    • 2011-03-10
    • 2011-04-25
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2020-11-27
    • 2015-07-13
    • 2014-12-19
    相关资源
    最近更新 更多