微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。