5 t-sql ssms distinct string-aggregation
我的查询如下:
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
Run Code Online (Sandbox Code Playgroud)
我的问题是我可以有更多的 sf.Naziv,也只有一个 sf.Naziv,所以我必须检查是否有一个,然后只显示一个结果,如果有两个或更多,则显示更多的结果。但现在的问题是,当我只有一个 sf.Naziv 时,查询返回两个同名的 sf.Naziv,因为在第一个 STRING_AGG 中我有更多关于 p.Naziv 的记录。
我不知道如何将DISTINCT实现到STRING_AGG函数中
欢迎任何其他解决方案,但我认为它应该与 DISTINCT 功能一起使用。
小智 6
看起来 unique 不起作用,所以您应该做的是将整个查询放入子查询中,删除其中的重复项,然后STRING_AGG对没有重复项的数据执行操作。
SELECT STRING_AGG(data)
FROM (
SELECT DISTINCT FROM ...
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8738 次 |
| 最近记录: |