sql server查询问题 20alan_lau]

发布时间:2014-1-1 0:09:48编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"sql server查询问题 20alan_lau]",主要涉及到sql server查询问题 20alan_lau]方面的内容,对于sql server查询问题 20alan_lau]感兴趣的同学可以参考一下。

请教高手,我现在想把一个表中如下结构, student  语文    数学   英语 student1   80     90     85  student2   85     92     82 在sql 查询输出时变成: student1    语文    80  student1    数学    90  student1    英语    85  student2    语文    85  student2    数学    92  student2    英语    82   怎么做啊?谢谢!

列转行

union all

/*--------------------------------- --  Author : htl258(Tony) --  Date   : 2009-09-16 12:01:51 --  Version: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)  Mar 29 2009 10:27:29  Copyright (c) 1988-2008 Microsoft Corporation Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2) ---------------------------------*/ --> 生成测试数据表:tb IF NOT OBJECT_ID('[tb]') IS NULL DROP TABLE [tb] GO CREATE TABLE [tb]([student] NVARCHAR(10),[语文] INT,[数学] INT,[英语] INT) INSERT [tb] SELECT 'student1',80,90,85 UNION ALL SELECT 'student2',85,92,82 GO --SELECT * FROM [tb] -->SQL查询如下: SELECT student,课程,分数 FROM tb UNPIVOT(分数 FOR 课程 IN(语文,数学,英语))b  /* student 课程 分数 student1 语文 80 student1 数学 90 student1 英语 85 student2 语文 85 student2 数学 92 student2 英语 82 */

select 姓名 , 课程 , 分数 from tb unpivot (分数 for 课程 in([语文] , [数学] , [英语])) t

改用动态吧 !

引用 4 楼 fredrickhu 的回复:SQL codeselect 姓名 , 课程 , 分数from tb unpivot (分数for 课程in([语文] ,[数学] ,[英语])) t .

IF NOT OBJECT_ID('[tb]') IS NULL     DROP TABLE [tb] GO CREATE TABLE [tb]([student] NVARCHAR(10),[语文] INT,[数学] INT,[英语] INT) INSERT [tb] SELECT 'student1',80,90,85 UNION ALL SELECT 'student2',85,92,82 GO --SELECT  declare @s nvarchar(4000) select @s=isnull(@s+' union all ','')+'select [student],[课程]='+quotename(Name,N'''')              --isnull(@s+' union all ','') [email protected] all +',[分数]='+quotename(Name)+' from tb' from syscolumns where ID=object_id('tb') and Name not in('student')--排除不转换的列 order by Colid print @s exec(@s+N' order by [student]') /* student 课程 分数 student1 语文 80 student1 数学 90 student1 英语 85 student2 英语 82 student2 数学 92 student2 语文 85 */ -- select [student],[课程]='语文',[Score]=[语文] from tb  union all select [student],[课程]='数学',[Score]=[数学]  from tb union all select [student],[课程]='英语',[Score]=[英语] from tb   order by [student]动态SQL,超简单!


上一篇:存储过程,在运行时总是说go附近有语法错误! 20alan_lau]
下一篇:为用户“NT AUTHORITY\NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied) 20alan_lau]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款