zoukankan      html  css  js  c++  java
  • 行列转换的例子

    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 [字段]

  • 相关阅读:
    WPF之长短
    MFC程序和Win32程序的关系
    .NET Framework/CLR之长短
    常用软件
    经典推荐.Net面试法宝
    socket编程原理
    常用开发工具
    Get和Post方法的区别
    MAC IP等相关
    Datagrid为什么不自动换行显
  • 原文地址:https://www.cnblogs.com/songr/p/7085971.html
Copyright © 2011-2022 走看看