Как сгруппировать concat на SQL сервере - PullRequest
0 голосов
/ 27 мая 2020

Я хочу объединить несколько диапазонов цен в запросе (один [PoRequestLineKey] имеет несколько диапазонов цен)

SELECT DISTINCT
    [PoRequestLineKey],
    PriceBand
FROM  
    [mpp].[WindowSpecific]  WS
JOIN
    [nbi].[WebDomainPriceBand] WDP ON WS.PriceBandKey = WDP.ID 
GROUP BY 
    [PoRequestLineKey]

1 Ответ

1 голос
/ 27 мая 2020

Если это SQL Server 2017, вы можете использовать string_agg , как показано ниже:

select [PoRequestLineKey], 
        string_agg([priceband], ', ') AS priceband
from [mpp].[WindowSpecific]  WS
JOIN [nbi].[WebDomainPriceBand] WDP ON
WS.PriceBandKey = WDP.ID 
Group by [PoRequestLineKey]

Для более старых версий:

SELECT [PoRequestLineKey], 
    STUFF((
        SELECT ', ' + WDP2.[priceband]
        FROM [nbi].[WebDomainPriceBand] WDP2
        WHERE WS.PriceBandKey = WDP2.ID 
        FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'),1,2,'') AS priceband
from [mpp].[WindowSpecific]  WS
JOIN [nbi].[WebDomainPriceBand] WDP ON
WS.PriceBandKey = WDP.ID 
Group by [PoRequestLineKey]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...