我有以下执行子查询连接的 SQL 语句。如果您注意到,它使用FOR XML ..
which .. well .. 让我有点不寒而栗 :: 我觉得这是一些代码气味。
使用 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 个或多个县中,所以我希望连接县名……否则我将得到每个县 1 个城市行(我不想要)。
这可以重构,更好吗?
我尝试使用 COALESCE 但没有运气。