行列转换的例子

Posted Energy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行列转换的例子相关的知识,希望对你有一定的参考价值。

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

 

以上是关于行列转换的例子的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 行列转换总结

oracle sql 中 如何实现table的行列转换?

sql server行列转换问题

oracle查询结果怎么行列转换

求oracle大神帮忙解决下面这个行列转换问题,谢谢!

简单的叙述下SQL中行列转换的小知识!