我正在完成学校作业,尽管我已经完成了作业,因为我不能在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"
我得到重复,所以我想摆脱重复,如果可能的话? :)
答案 0 :(得分:0)
您的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
来说似乎不太可能,那么您需要使用某种子查询来删除重复项。
答案 1 :(得分:0)
从分组依据中删除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