サブクエリ連結を行う次の SQL ステートメントがあります。気がつけば、それはFOR XML ..
which を使用しています .. まあ .. 少し身震いします :: コードの匂いがするような気がします。
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 を使用しようとしましたが、うまくいきませんでした。