I have created query for converting vertical table data into horizontal, and I have a declare
statement in my query.
I have to create a view based on my query, but I get an error from SQL Server since I have a declare
statement in my query.
The query that I am trying to turn into a view:
declare @columnName nvarchar(max)
declare @query nvarchar(max)
select
@columnName = COALESCE(@columnName + ', ', '') + QUOTENAME(element_name)
from
(select distinct
element_name
from
elements e
join
form_elements fe on fe.element_id = e.id
join
form on fe.form_id = form.id and form.id = 1) as B
set @query = 'select *
from
(select fi.index_key as incidnet_id, e.element_name as col_name, fev.value as value
from form_element_values fev
join form_index fi on fev.form_index_id = fi.id
join form_elements fe on fev.form_element_id = fe.id
join elements e on fe.element_id = e.id
join form f on fi.form_id = f.id
where f.id = 1) as SourceData
PIVOT(max(value) for col_name in (' + @columnName + ')) as pivotTable'
exec(@query)
This query takes the data from vertical table and show it in horizontal columns
As my column name are dynamic, I have to create a local variable but now I am having difficulty in converting this query into a view.
Is there any other alternative for this query so I don't have to use local variable?