View的动态查询重构

时间:2014-06-26 18:11:50

标签: sql sql-view dynamicquery

我创建了一个动态SQL查询,我想将其用作视图,但是,查询依赖于使用“DECLARE”语句。我试图在没有'DECLARE'语句的情况下重组它没有成功,但是不能完全正确。我正在使用SQL Server Express 2014,并希望得到任何帮助。

DECLARE @query nvarchar(MAX)
DECLARE @Name nvarchar(MAX)
select @Name = STUFF((SELECT distinct ',' + QUOTENAME(Name) 
                                    FROM [dbo].[ObjectView]
                                    FOR XML PATH(''), TYPE
                                    ).value('.', 'NVARCHAR(MAX)')
                                    ,1,1,'')
SET @query = ' SELECT * from
(
    select *
    from [dbo].[ObjectView]
)t

pivot (MAX(Value) for Name IN (' +@Name+ ')) AS PivotTable'

execute(@query)

1 个答案:

答案 0 :(得分:-3)

您可能必须使用XML语法。我生气了。

create view viewname as
select * --< you really should call out the fields, here...
from(
    select * --< ...and here.
    from   ObjectView
  t
pivot( MAX( Value ) for Name in(
    select distinct QUOTENAME( Name ) 
    FROM ObjectView
    FOR XML PATH )
) AS PivotTable