SQL Server 2017-使用枢轴和动态SQL转换存储过程以进行查看

问题描述

我有一张桌子,如下表

CREATE TABLE [dbo].[table1] 
(
    col1 NVARCHAR(255),col2 NVARCHAR(255),colp NVARCHAR(255),colnum INTEGER
)

和一个存储过程

CREATE PROCEDURE [dbo].[procedure]
AS
    DECLARE @cols NVARCHAR(MAX),@sql NVARCHAR(MAX)

    SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME([colp])
                       FROM [dbo].[table1]
                       ORDER BY 1
                       FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,'')

    SET @sql = 'SELECT [col1],[col2],' + @cols + '
                FROM
                    (SELECT [col1],[colp],[colnum]
                     FROM [dbo].[table1]) s
                PIVOT
                    (MAX(colnum) FOR colp IN (' + @cols + ')) p'

    EXECUTE(@sql)

colp列中的值需要动态确定-它不是固定列表。

如何将此存储过程转换为视图?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...