sql语句实现行转列的3种方法实例视频,sql语句实现行转列的3种方法实例教学

sql语句实现行转列的3种方法实例视频,sql语句实现行转列的3种方法实例教学,sql语句实现行转列的3种方法实例

将列值旋转成列名(即行到列)是我们在开发中经常遇到的一个需求。本文主要介绍了在sql语句中实现行列转换的三种方法,并分别给出了详细的示例代码。有需要的朋友可以参考参考。让我们一起学习。

前言

一般做数据统计的时候会用到行对列。如果要统计学生的成绩,数据库里的查询会是这样的,但是达不到预期的效果,所以查询的时候要做一些处理。下面就不多说了。下面我们一起来看看详细的介绍。

创建表测试表(

[Id] [int] IDENTITY(1,1)不为空,

[用户名] [nvarchar](50)空,

[Subject] [nvarchar](50) NULL,

[源][数字](18,0)空

)开[主]

插入到测试表([用户名]、[主题]、[来源])

选择N个张三,N个中国人,60个工会全部

选李四,n 数学,70联全

选择‘王五’,n个‘英语’,80个全联盟

选择王五,n 数学,75联全

选择“王五”,n个“语言”,57个联盟全部

选择N 李四,N 中国人,80工会全部

选择张三,n 英语,100

在这里,我用三种方法来实现行到列的第一种方法:静态行到列。

选择用户名,

Sum(格主语当语言然后源else 0 end)语言,sum(格主语当数学然后源else 0 end)数学,

sum(case Subject when English then Source else 0 end)来自TestTable group by UserName的英语

用视点线转换列

select * from

(从testtable中选择用户名、主题、来源)test pivot(sum(source)for subject in(中文、数学、英语)

)pvt

用存储过程行转换列。

更改过程pro_test

@userImages varchar(200),

@Subject varchar(20),

@Subject1 varchar(200),

@TableName varchar(50)

如同

declare @ SQL varchar(max)= select * from(select @ user images from @ TableName )选项卡

在枢轴上转动

主题(“@Subject1”)的sum(“@ Subject”)

)pvt

exec (@sql)

exec pro_test 用户名,主题,来源,

测试表,

主题,

语文,数学,英语

他们的效果都是这样的。

以上三种实现行列转换的方法,我们可以根据自己的需要采用不同的方法。

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

sql语句实现行转列的3种方法实例视频,sql语句实现行转列的3种方法实例教学