我的查询如下:
select
u.Id,
STRING_AGG(sf.Naziv, ', ') as 'Ustrojstvena jedinica',
ISNULL(CONVERT(varchar(200), (STRING_AGG(TRIM(p.Naziv), ', ')), 121), '')
as 'Partner',
from Ugovor as u
left join VezaUgovorPartner as vup
on vup.UgovorId = u.Id AND vup.IsDeleted = 'false'
left join [TEST_MaticniPodaci2].dbo.Partner as p
on p.PartnerID = vup.PartnerId
left join [dbo].[VezaUgovorUstrojstvenaJedinica] as vuu
on vuu.UgovorId = u.Id
left join [TEST_MaticniPodaci2].hcphs.SifZavod as sf
on sf.Id = vuu.UstrojstvenaJedinicaId
left join [dbo].[SifVrstaUgovora] as vu
on u.VrstaUgovoraId = vu.Id
group by u.Id, sf.Naziv
我的问题是,我可以有更多 sf.Naziv,但也只能有一个 sf.Naziv,因此我必须检查是否有一个,然后仅显示一个结果,如果有两个或更多,则显示更多结果。但现在的问题是,当我只有一个 sf.Naziv 时,查询返回两个同名的 sf.Naziv,因为在第一个 STRING_AGG 中我有更多关于 p.Naziv 的记录。
我不知道如何实施DISTINCT into STRING_AGG功能
欢迎任何其他解决方案,但我认为它应该与 DISTINCT 函数一起使用。
看起来 unique 不起作用,所以你应该做的是将整个查询放入子查询中,删除那里的重复项,然后执行STRING_AGG
在没有重复项的数据上。
SELECT STRING_AGG(data)
FROM (
SELECT DISTINCT FROM ...
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)