У меня есть действующий сводный запрос для значений статических столбцов, которые я хочу преобразовать для динамических значений столбцов.Динамический сводный запрос в sql-сервере
Этот запрос:
with a as (
select request_id, dateadd(month,datediff(month,0,logged_datetime),0) as 'Month'
,dateadd(month,datediff(month,0,logged_datetime),0) as 'Year'
from requests
)
select * from (
select datepart(m,a.Month) as 'months',datepart(YEAR,a.Year) as 'years',a.request_id
from a ) ps
pivot (
count(request_id) for [years] in ([2008],[2009],[2010],[2011],[2012],[2013],[2014],[2015])
) as pvt
order by months
Для динамического запроса приведённой ниже я получаю ошибки как
Msg 207, уровень 16, состояние 1, строка 5 Неверное имя столбца '2010'. :
select distinct datepart(year,dateadd(month,datediff(month,0,logged_datetime),0)) as 'Yearz'
into #t
FROM requests
DECLARE @Dynamic AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(Yearz)
FROM (SELECT * from #t) AS Yea
SET @Dynamic =
N'
select * from (
select datepart(m,dateadd(month,datediff(month,0,logged_datetime),0)) as months,' + @ColumnName + ',request_id
from requests) ps
pivot (
count(request_id) for [Years] in (' + @ColumnName + ')
) as pvt
order by months
'
EXEC sp_executesql @Dynamic
Так что это проблема –
@NoDisplayName D ynamic query, который Im пытается не работает. Получение ошибок. – Crabster
Обнаружено, что он удаляет '+ @ColumnName +' из исходного запроса. Попробуйте это .'..выберите datepart (m, dateadd (месяц, датфик (месяц, 0, logged_datetime), 0)) как месяцы, request_id из запросов ..' –