【发布时间】:2018-02-24 02:52:23
【问题描述】:
请注意,这不是与 cmets 中引用的问题的重复,因为这需要 CTE。
如何创建一个递归的公用表表达式来组合分组数据(如string_agg() 或group_concat())?
例如,我有一个简单的数据集,如下所示:
┌──────┬──────────┐
│ code │ category │
╞══════╪══════════╡
│ 1 │ A │
├──────┼──────────┤
│ 1 │ B │
├──────┼──────────┤
│ 2 │ A │
├──────┼──────────┤
│ 3 │ B │
├──────┼──────────┤
│ 4 │ B │
├──────┼──────────┤
│ 4 │ C │
├──────┼──────────┤
│ 4 │ D │
├──────┼──────────┤
│ 5 │ B │
└──────┴──────────┘
我想生成一个按组组合类别的结果集,如下所示:
┌──────┬──────────┐
│ code │ category │
╞══════╪══════════╡
│ 1 │ A,B │
├──────┼──────────┤
│ 2 │ A │
├──────┼──────────┤
│ 3 │ B │
├──────┼──────────┤
│ 4 │ B,C,D │
├──────┼──────────┤
│ 5 │ B │
└──────┴──────────┘
我认为答案可能是通用的,但我特别有兴趣为 PostgreSQL、SQLite 和 SQL Server 找到解决方案。
【问题讨论】:
-
答案肯定不是通用或 ANSI 标准,您不需要递归 CTE 来回答这个问题。使用您实际使用的数据库进行标记。
-
基于样本和结果,它看起来像连续行值...Postgresql、SQLite 和 SQL Server
-
@Anagha 不,它不是重复的。我正在寻找使用 CTE 的解决方案。其他答案没有。
标签: sql sql-server sqlite common-table-expression recursive-query