SQL Server数据库基础之行数据转换为列数据
文章主要给大家介绍了关于SQL Server基础之行数据转换为列数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们...
文章主要给大家介绍了关于SQL Server基础之行数据转换为列数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
准备工作
创建表
use [test1]
go
create table [dbo].[student](
[id] [int] identity(1,1) not null,
[name] [nvarchar](50) null,
[project] [nvarchar](50) null,
[score] [int] null,
constraint [pk_student] primary key clustered
(
[id] asc
)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary]
) on [primary]
go
插入数据
insert into test1.dbo.student(name,project,score)
values('张三','android','60'),
('张三','iOS','70'),
('张三','html5','55'),
('张三','.net','100'),
('李四','android','60'),
('李四','ios','75'),
('李四','html5','90'),
('李四','.net','100');
使用Case When和聚合函数进行行专列
语法
select column_name,
<aggregation function>(<case when expression>)
from database.schema.table
group by column_name
语法解析
column_name
数据列列名
aggregation function
聚合函数,常见的有:sum,max,min,avg,count等。
case when expression
case when表达式
示例
select name,
max(case project when 'android' then score end) as '安卓',
max(case project when 'ios' then score end) as '苹果',
max(case project when 'html5' then score end) as 'html5',
max(case project when '.net' then score end) as '.net'
from [test1].[dbo].[student]
group by name
示例结果
转换前
转换后
使用PIVOT进行行专列
PIVOT通过将表达式中一列中的唯一值转换为输出中的多个列来旋转表值表达式。并PIVOT在最终输出中需要的任何剩余列值上运行聚合,PIVOT提供比一系列复杂的SELECT...CASE语句指定的语法更为简单和可读的语法,PIVOT执行聚合并将可能的多行合并到输出中的单个行中。
语法
select <non-pivoted column>,
[first pivoted column] as <column name>,
[second pivoted column] as <column name>,
...
[last pivoted column] as <column name>
from
(<select query that produces the data>)
as <alias for the source query>
pivot
(
<aggregation function>(<column being aggregated>)
for
[<column that contains the values that will become column headers>]
in ( [first pivoted column], [second pivoted column],
... [last pivoted column])
) as <alias for the pivot table>
<optional order by clause>;
语法解析
<non-pivoted column>
非聚合列。
[first pivoted column]
第一列列名。
[second pivoted column]
第二列列名。
[last pivoted column]
最后一列列名。
<select query that produces the data>
数据子表。
<alias for the source query>
表别名。
<aggregation function>
聚合函数。
<column being aggregated>
聚合函数列,用于输出值列,最终输出中返回的列(称为分组列)将对其进行分组。
[<column that contains the values that will become column headers>]
转换列,此列返回的唯一值将成为最终结果集中的字段。
[first pivoted column], [second pivoted column], ... [last pivoted column]
数据行中每一行行要转换的列名。
<optional order by clause>
排序规则。
示例
select b.Name,b.[android],b.[ios],b.[html5],b.[.net]
from
(select Name,Project,Score from [test1].[dbo].[student])
as a
pivot
(
max(Score)
for Project in ([android],[ios],[html5],[.net])
)
as b
order by b.name desc
示例结果
转换前
转换后
注意事项
1、如果输出列名不能在表转换列中,则不会执行任何计算。
2、输出的所有列的列名的数据类型必须一致。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。
-
SQL server数据库创建代码 filegroup文件组修改的示例代码
文章主要介绍了SQL server数据库创建代码 filegroup文件组修改的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下数据库的操作:1. 对数据文件...
-
SQLServer数据库处于恢复挂起状态的解决办法
文章主要介绍了SQLServer数据库处于恢复挂起状态的解决办法 ,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.一、总结 如果数据库处...
-
SQL Server数据库之datepart和datediff应用查找当天上午和下午的数据
文章主要介绍了sqlserver之datepart和datediff应用查找当天上午和下午的数据,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下DATEPART() 函数用于返回日期/时间的单独...
-
SQL Server数据库中的数据类型隐式转换问题
文章主要介绍了SQL Server 中的数据类型隐式转换问题,本文给大家介绍的非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下写这篇文章的时候,还真不知道如何取名,也不知道这...
-
Thinkphp5框架实现获取数据库数据到视图的方法
文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下。这是学习thinkhp5的...
-
Linux下使用ps命令来查看oracle数据库相关进程的操作步骤
ps命令的操作是很多的小伙伴在管理进程的操作的时候遇到的问题,对于Linux系统中今天小编就来跟大家分享一下详解Oracle相关进程在电脑中使用ps命令查看的操作步骤。...
-
如何使用Access数据库创建一个简单MIS管理系统
MIS管理系统也是一种很实用的管理系统,可以将很多东西都放的井井有条,便于大家查找,下文中就以大家家中都有的CD、VCD为例,为大家介绍如何建立一个MIS管理系统,使这些东西有条理。...
-
Access数据库日常维护和Access数据库优化方法
文章主要介绍了Access数据库日常维护方法(优化),适用范围:使用Access作为数据库建设的网站。需要的朋友可以参考下...
-
MariaDB数据库的外键约束实例代码介绍详解
文章主要给大家介绍了关于MariaDB数据库的外键约束的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...
-
Windows10系统下MariaDB数据库安装教程图解
文章给大家介绍Windows10系统下安装MariaDB 的教程图解,感兴趣的朋友一起看看吧,MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,...