Использование динамического SQL для объединения двух столбцов в заголовок таблицы с соответствующими значениями
У меня есть два стола, список гостей и список клиентов. Я присоединился к ним и использовал динамическую сводную таблицу SQL для преобразования столбца "город" из таблицы GuestList в строки или заголовки таблиц, и среднее население будет отображаться под каждым городом. Таким образом, после выполнения запроса внизу заголовок моей таблицы выглядит следующим образом, и среднее население отображается под каждым городом.
Время| Атланта| Лос-Анджелес | Нью-Йорк | Денвер| Миннеаполис
Но я хочу, чтобы мой заголовок таблицы выглядел так. В основном "Id" имеет четыре значения: 1, 2,3,4, и каждый город имеет все эти четыре идентификатора. Я не мог бы добавить все города, но остальные города тоже будут такими.
Время| Атланта_1|| Атланта_2|| Атланта_3|| Атланта_4|
Не мог бы кто-нибудь помочь мне в этом, написав остальную часть запроса о том, как объединить два столбца в таблице GuestList и поместить под ним их соответствующее население.
Что я уже пробовал:
declare @ColumnNames nvarchar(max) = '' declare @SQL nvarchar(max) = '' select @ColumnNames += QUOTENAME(a.address) + ',' from GuestList as a inner join CustomerList as b on a.Id = b.Id group by a.address order by a.address set @ColumnNames = left(@ColumnNames, LEN(@ColumnNames)-1 ) set @SQL= N' select Time,' + @ColumnNames + ' from ( select a.Time, a.city, a.population, b.Gender from GuestList as a inner join CustomerList as b on a.Id = b.Id inner join Split(@city, '','') as c on a.city = c.Data where a.city = c.Data ) as SourceTable pivot (avg(population) for city in (' + @ColumnNames + ')) as PivotTable order by Time' execute sp_executesql @SQL, N'@city nvarchar(max)' ,@city = 'Atlanta,Los Angeles,New York'