内部不同 String_Agg

Distinct inside String_Agg

我正在做一项学校作业,不过我已经完成了,因为我不能在 String_Agg 中使用 distinct。但是我不止一次得到'SNS',所以我在想是否有办法区分它所以我只得到了一次。

我尝试了 distinct,但发现它不适用于 string_agg,现在我正在尝试使用子查询,但我不知道该怎么做。

select FAG$.FagID, FagNavn, STRING_AGG(Lektion$.LaererID, ',') 'Lærer'
from Fag$
join Lektion$
on Fag$.FagID= Lektion$.FagID
group by Fag$.FagID, FagNavn, LaererID

我希望输出为:

"NET = KBEN, SNS"

示例,而不是

"NET = KBEN"
"NET = SNS, SNS, SNS"

我有重复项,所以我想去掉重复项,如果可能的话? :)

您的 GROUP BY 应该在 SELECT 中有 未聚合的 列。 STRING_AGG() 是聚合函数。所以你可能想要:

select f.FagID, FagNavn, STRING_AGG(l.LaererID, ',') as Lærer
from Fag$ f join
     Lektion$ l
     on f.FagID = l.FagID
group by f.FagID, FagNavn;

如果您仍然重复(使用 id 似乎不太可能,那么您需要使用某种子查询来删除重复项。

从组中删除 LaererID

select FAG$.FagID, FagNavn, STRING_AGG(Lektion$.LaererID, ',') 'Lærer'
from Fag$
join Lektion$
on Fag$.FagID= Lektion$.FagID
group by Fag$.FagID, FagNavn