これを試してください:
SELECT fromcity ,[Vskp]=isnull([Vskp],0) ,[Hyd]=isnull([Hyd],0) ,[Chennai]=isnull([Chennai],0) FROM ( SELECT fromcity ,tocity,Dist FROM DistanceTable union SELECT tocity,fromcity ,Dist FROM DistanceTable ) AS ET PIVOT (max(dist) FOR tocity IN ([Vskp],[Hyd],[Chennai]) ) AS PT
プレ>アップデート: 以下のように、可変数の都市に対して動的 SQL を使用します:
DECLARE @cols VARCHAR(MAX), @IsNullCols VARCHAR(MAX), @query VARCHAR(MAX) SELECT @cols = STUFF(( SELECT DISTINCT ', [' + tocity + ']' FROM (SELECT tocity FROM DistanceTable union SELECT fromcity FROM DistanceTable)a FOR XML PATH('') ), 1, 2, ''); print @cols; SELECT @IsNullCols = STUFF(( SELECT DISTINCT ', ['+tocity+']=IsNull([' + tocity + '],0)' FROM (SELECT tocity FROM DistanceTable union SELECT fromcity FROM DistanceTable)a FOR XML PATH('') ), 1, 2, ''); print @IsNullCols; set @query = 'SELECT fromcity ,'+ @IsNullCols +' FROM ( SELECT fromcity ,tocity,Dist FROM DistanceTable union SELECT tocity,fromcity ,Dist FROM DistanceTable ) AS ET PIVOT (max(dist) FOR tocity IN ('[email protected]+') ) AS PT ' exec(@query)
プレ>