我创建了用于将垂直表数据转换为水平表的查询,并且我的declare
查询中有一条语句。
我必须根据我的查询创建一个视图,但我从 SQL Server 收到一个错误,因为我的declare
查询中有一条语句。
我试图变成视图的查询:
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)
此查询从垂直表中获取数据并将其显示在水平列中
由于我的列名是动态的,我必须创建一个局部变量,但现在我很难将此查询转换为视图。
这个查询还有其他选择,所以我不必使用局部变量吗?