我在 SQL Server 中有一个多级表层次结构,当加入它们时,我想对其中一个表的行中的字符串进行聚合。在下面屏幕截图中的(简化)示例中,我有 Level1->Level2->Level3 以及一个表 PerformingUser “挂在”Level1 下。我已经对所有这四个表进行了 JOIN,得到了 8 行。到目前为止一切都很好。
现在,我想要的是这 8 行中的每一行都有一个新列(“AllUsersForLevel1”),其中包含为其 Level1的所有 PerformingUsers 的聚合。(目的是 PerformingUser 也可以看到其他 PerformingUser 具有相同的 Level1。)
因此,对于前 2 行,我想要一个带有“aretha,mary”的新列。在其他 6 行中,该列应该有“约翰,吉姆”。
我已经尝试过 STRING_AGG(如图中的注释所示),但它需要一个分组(我不想要;我想要所有 8 行)。我还尝试在 OVER (PARTITION BY Level1ID) 上执行 STRING_AGG,但得到“函数 'STRING_AGG' 不是有效的窗口函数,不能与 OVER 子句一起使用。”
有人对如何做到这一点有建议吗?