все сводки в T-SQL одинаковы;
- найти значения столбца, которые вы хотите колонизировать
- найдите столбец, которому вы назначаете преобразование (сумма, макс., мин и т. д.)
- остальное подливка
В вашем случае у вас есть стол
select
id,
DENM,
DD
from [table_name]
, который вы хотите присоединить к другому столу.:
select
id,
DENM,
DD,
t2.[fields]
from [table_name] t1 with (nolock)
join [second_table] t2 with (nolock)
on t1.id = t2.id
и поместите в него сводную точку:
select
id,
[field list]
from
(
select
id,
DENM,
DD,
t2.[fields]
from [table_name] t1 with (nolock)
join [second_table] t2 with (nolock)
on t1.id = t2.id
) data
pivot
(
sum(value field)
for [DD] in (@collist)
) as pvtData
Я рекомендую создать свой [список полей] из предыдущего запроса, который создает хороший чистый заполненный список значений.Примерно так:
DECLARE @collist nvarchar(max);
SELECT @collist = STUFF(
(
SELECT
distinct ',' + quotename(Variable)
from
[table_name] t1
group by
Variable
FOR XML PATH(''), root('MyString'), type).value('/MyString[1]','varchar(max)'), 1, 1, '');
Для этого потребуется использовать динамический SQL и завершить сохраненный процесс с помощью
exec sp_executesql @queryText