• 行列转换的例子


    IF OBJECT_ID('tempdb..#ABC') IS NOT NULL  
    DROP TABLE #ABC  
      
    create table #ABC  
    (  
    ID  INT  
    ,UserID BIGINT    
    ,UserExamID INT   
    ,TestPaperID INT      
    ,QuestionID INT  
    ,AnswerID   INT  
    ,Ctime DATETIME  
    )  
    INSERT INTO #ABC  
    SELECT 1,120629210042331600,1,3,22,49,GETDATE() UNION ALL  
    SELECT 2,120629210042331600,1,3,23,51,GETDATE() UNION ALL  
    SELECT 3,120629210042331600,1,3,24,56,GETDATE() UNION ALL  
    SELECT 4,120629210042331600,1,3,25,62,GETDATE() UNION ALL  
    SELECT 5,120629210042331600,1,3,26,66,GETDATE() UNION ALL  
    SELECT 6,120629210042331600,1,3,27,72,GETDATE() UNION ALL  
    SELECT 7,120629210042331600,1,3,28,77,GETDATE() UNION ALL  
    SELECT 8,120629210042331600,1,3,29,81,GETDATE() UNION ALL  
    SELECT 9,120629210042331600,1,3,30,86,GETDATE() UNION ALL  
    SELECT 10,120629210042331600,1,3,31,90,GETDATE() UNION ALL  
    SELECT 1,120629210011732588,1,3,22,49,GETDATE() UNION ALL  
    SELECT 2,120629210011732588,1,3,23,51,GETDATE() UNION ALL  
    SELECT 3,120629210011732588,1,3,24,56,GETDATE() UNION ALL  
    SELECT 4,120629210011732588,1,3,25,62,GETDATE() UNION ALL  
    SELECT 5,120629210011732588,1,3,26,66,GETDATE() UNION ALL  
    SELECT 6,120629210011732588,1,3,27,72,GETDATE() UNION ALL  
    SELECT 7,120629210011732588,1,3,28,77,GETDATE() UNION ALL  
    SELECT 8,120629210011732588,1,3,29,81,GETDATE() UNION ALL  
    SELECT 9,120629210011732588,1,3,30,86,GETDATE() UNION ALL  
    SELECT 10,120629210011732588,1,3,31,90,GETDATE()    
      
    SELECT * FROM #ABC  
    
    
    DECLARE @s NVARCHAR(4000)  
    SELECT @s = ISNULL(@s + ',', '') +  QUOTENAME(QuestionID)  
    FROM  (select distinct QuestionID from #ABC) as A ---列名不要重复  
      
    Declare @sql NVARCHAR(4000)  
    SET @sql='  
     select r.* from  
    (select UserID,QuestionID,AnswerID from #ABC) as t  
    pivot  
    (  
    max(t.AnswerID)  
    for t.QuestionID in ('+@s+')  
    ) as r'  
       
    EXEC( @sql) 

    如果要消除NULL,可以利用@s构造一个 ISNULL(字段.0) AS [字段]

  • 相关阅读:
    JVM体系结构之五:本地方法栈
    netty中的ByteBuf
    AtomicLong和LongAdder的区别
    Python介绍
    netty支持的协议
    spring扩展点之四:Spring Aware容器感知技术,BeanNameAware和BeanFactoryAware接口,springboot中的EnvironmentAware
    Netty组件
    《深入Java虚拟机学习笔记》- 第9章 垃圾收集
    《深入Java虚拟机学习笔记》- 第8章 连接模型
    netty中的EventLoop和EventLoopGroup
  • 原文地址:https://www.cnblogs.com/songr/p/7085971.html
Copyright © 2020-2023  润新知