У меня есть следующий оператор SQL, который выполняет конкатенацию подзапроса. Если вы заметили, он использует FOR XML ..
, что ... ну ... да, я немного дрожу :: Я чувствую, что это какой-то запах кода.
Есть ли лучший способ сделать это с SQL Server 2008?
SELECT a.CityId AS LocationId, a.City,
STUFF(
(SELECT ', ' + x.County
FROM [dbo].[CountiesView] x
INNER JOIN [dbo].[CityCounties] y ON x.CountyId = y.CountyId
WHERE y.CityId = a.CityId
FOR XML PATH (''))
, 1, 2, '')
FROM [dbo].[CitiesView] a
where a.StateCode = 'NY'
Что делает этот код, так это перечисляя все города (и их округа) для штата Нью-Йорк. Поскольку город может существовать в одном или нескольких округах, я хочу СОЗДАТЬ названия округов ... в противном случае я получу по 1 строке города на округ (чего я не хочу).
Можно ли это изменить, лучше?
Я пытался использовать COALESCE, но безуспешно.