【发布时间】:2016-01-26 08:31:40
【问题描述】:
在“SQL - Turn relationship IDs into a delimited list”问题的基础上,我想进一步按独特的网站集对结果进行分组。例如,在该问题中使用相同的数据:
站点 15 和 16 一起共享 a、b、c 的一个排列。站点 18、19、20 共享另一个排列。站点 17 使用两种排列。
我想找到一个结果类似于链接问题的查询,但在 site_ids 中没有任何重叠:
我不确定仅使用 SQL 是否可行,我可能只需要构建一些东西来处理代码中的数据,但我正在祈祷...
我正在使用 SQL Server,但如果知道如何使用 postgres 也很高兴。
更新:
有人建议Simulating group_concat MySQL function in Microsoft SQL Server 2005? 可能是重复的。根据我对 group_concat 的(有限)理解,它似乎可能会重复 question referenced above,但不是这个问题。这个问题不需要在 site_ids 中重叠。
【问题讨论】:
-
为什么 17 被列为第二个 foo,bar,baz 行的单个条目?但总的来说,在 Postgres 中你会使用
string_agg(site_id, ',') -
17 有不同的条目,因为它有来自 15,16 组的不同数据,以及来自 18,19,20 组的不同数据。 string_agg() 让我得到链接问题的结果。这个问题试图更进一步,消除site_id col之间的重叠。
-
我没有看到第一个屏幕截图中前三行的 a、b、c 列有什么不同。前两排和第三排到底有什么不同? (顺便说一句:作为屏幕截图的示例数据不受欢迎。将其发布为格式化文本 - 或者甚至更好地作为
insert声明。 -
17 同时具有“foo/bar/baz”排列和“bar/baz/blah”排列。
标签: sql sql-server postgresql