如何使用SQL语句将行和列进行转换

SQL SERVER透视转换(行旋转列) 所谓的透视转化通俗点就是吧数据库的行转成列的一种处理方式,透视转换是一种常用的技巧,在生活中人们更喜欢看经过透视转化的数据表,这种表更加直观和简洁,下面将介绍两种处理方式。 样例数据: USE tempdb; IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders;GO CREATE TABLE dbo.Ord 阅读详情

数据库是MSSQL2005.

  第一部分主要的操作包含:数据库的创建、删除,表的增、删、改,表中数据的增、删、改、查,视图的操作。

--查询数据库是否存在
if exists ( select * from sysdatabases where [name]='TestDB')
print 'Yes, the DB exists'
else
print 'No, need a new one?'

--新建一个数据库
create database TestDB on
(
     name 
= 'TestData',
     filename 
= 'G:\DBS\KeyTest.mdf',
     size 
= 3,
     filegrowth 
= 2
)
log on
(
     name 
= 'TestLog',
     filename 
= 'G:\DBS\KeyTest.ldf',
     size 
= 3,
     filegrowth 
= 10
)

--drop database TestDB

use TestDB
go

--新建一个表
create table [Scores]
(
     
[ID] int identity(1,1) primary key,
     
[Student] varchar(20) ,
     
[Subject] varchar(30),
     
[Score] float
)

--drop table [Scores]

--修改表中的一列
alter table Scores alter column [Student] varchar(20) not null

--新增一列
alter table Scores add Birthday datetime 

--删除一列
alter table Scores drop column Birthday

--往表中插入单条数据,方法1:带列名
insert into Scores(Student,Subject,Score)
values('张三','语文','90')

--往表中插入单条数据,方法2:不带列名,但要求值的类型要和列字段类型对应
insert into Scores
values('张三','英语','95')

--插入多条数据:用union或者union all
insert into Scores(Student,Subject,Score)
select '李四','语文','89'
union all
select '李四','英语','78'

--删除表中数据,没有条件时,删除所有
delete from Scores where ID in(7,8)

--修改表中数据
update Scores 
set Student='王五',Score='94'
where ID=10

--查看数据
select * from Scores

--查看表中最大的identity值
select @@identity

--或者利用dbcc命令查看表中最大的identity值
dbcc checkident('Scores',noreseed)

--创建视图,全部省略视图的属性列名,由子查询目标列的字段组成
create view StudentView
as
select Student,Subject,Score
from Scores

--加上with check option,以后对视图的操作(增,改,删,查)都会自动加上where ID>3
/*
create view StudentView
as
select Student,Subject,Score
from Scores
where ID>3
with check option
*/

--创建视图,全部定义属性列名,需要定义列名的情况:
----某个目标列(子查询)不是单纯的属性列,而是聚集函数或列表达式
----多表连接时选出了几个同名列
----需要在视图中为某个列启用新的更合适的名字
create view IS_Student(Student,Subject,MaxScore)
as
select Student,Subject,Score
from Scores
where Score=(select max(Score) from Scores)


--查询视图,和基本表完全样,只不过如果视图中有with check option,会自动加上那个条件
select * 
from StudentView

--查询自定义列名的视图
select * 
from IS_Student

--对视图的insert/delete/update,和对基本表的操作一样,并且最终都是用RDBMS自动转换为对基本表的更新
--并不是所有的视图都是可更新的,因为有些视图的更新不能有意义的转换成对相应基本表的更新

--删除视图
drop view StudentView

  第二部分,这次练习的主题。

  【一】行转列

  1,查询原始的数据

/***这次练习的主题,行转列,列转行***/
select * from Scores

如何使用SQL语句将行和列进行转换?

  2,得到姓名,通过group by

select Student as '姓名'
from Scores
group by Student
order by Student

 

如何使用SQL语句将行和列进行转换?

  3,再加上max, case……when

select Student as '姓名',
max(case Subject when '语文' then Score else 0 end) as '语文' ,--如果这个行是“语文”,就选此行作为列
max(case Subject when '英语' then Score else 0 end ) as '英语'
from Scores
group by Student
order by Student

 

如何使用SQL语句将行和列进行转换?

  查看其它资料时,看到另外一种方法,用pivot

--group by, avg/max, pivot。这里用max和avg,结果都一样,有什么区别吗?有点不明白
--
参考网上的资料,用法如下
/*

pivot(
  聚合函数(要转成列值的列名)
  for 要转换的列
  in(目标列名)
  )
*/
select Student as '姓名',
avg(语文) as '语文',avg(英语) as '英语'from Scorespivot(    avg(Score) for Subject     in (语文,英语)    )as NewScoresgroup by Studentorder by Student asc
sql中把指定的列作为标题列 立即下载

相关推荐

SQL语句行列转换(附带数据库、表、视图操作)

SQL语句行列转换(附带数据库、表、视图操作) ,不错的文档。

Sql实现某列的值转为列名

使用sql的方式实现某列的值转为列名

qq_42456324的博客 1498

深入解析ISO12233标准:SFR算法从理论到代码实现

本文深入解析ISO12233标准中的SFR算法,从理论到代码实现全面介绍如何量化成像系统的解析力。通过e-SFR算法测量边缘扩散函数(ESF)和空间频率响应(SFR),结合光学原理和实际代码示例,帮助开发者准确评估影像质量。文章包含关键步骤的Python实现和工程优化技巧,适用于相机测试、镜头评估等应用场景。

weixin_29200485的博客 154

SQL 分组求和+行转列

SqlServer语句,分组求和,行专列,适用于前端折线图的数据赋值。

JingDuiTell的博客 2790

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 527

【毕设实战】基于YOLOv8的HRSC2016船舶智能检测系统开发全指南(含可视化UI界面,打造海事领域高分毕设)

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

know_F0727的博客 129

sqlserver 行转列,求和

今天需要这么一条sql语句,需求是B2B_Agent(供应商表)、forderform_tmpUse(订单状态临时表),找出每个供应商出票状态是(2, 7, 8, 15, 16) 这几种状态的出票总数。forderform_tmpUse中的每一条记录代表一个订单 首先用到的是行转列,将这两个表进行关联之后,对ftu.status 的每个状态求和。然后就把刚刚的这个查询当...

weixin_30480075的博客 755

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

k8291121的博客 2008

SQL语句--行列转换以及字符串求和

create table tempAB(A varchar(10),B varchar(10))insert into tempAB values(a1,b1)insert into tempAB values(a2,b1)insert into tempAB values(a3,b1)insert into tempAB values(a4,

lintf1986的专栏 865

知识图谱-KGE-语义匹配-双线性模型-2018:SimplE

【paper】 SimplE Embedding for Link Prediction in Knowledge Graphs 【简介】 本文是加拿大英属哥伦比亚大学的两位学者发表在 NIPS 2018 上的工作,文章提出了 SimplE(Simple Embedding)。这篇和前面一篇差不多,也是对 1927 年的 CP 进行改进(简化),传统CP为实体分配的两个向量是独立训练的,SimplE利用关系的逆在三元组打分函数中加上了一个对称项,使得每个实体的两个向量依赖学习,并且 SimplE 的复杂度随

u013250861的博客 958

【GLM5】手把手教你在openclaw中白嫖英伟达羊毛

openclaw很强,但是也很贵,每一次请求都会消耗大量的token。而英伟达平台正好可以白嫖免费的模型,于是,我们一拍即合。

Science prince的博客 3820

如何使用SQL语句将行和列进行转换?

本来只是想解决怎么把数据的行和列进行转换的,但最近觉得一些数据库SQL语句的操作,很久没用了,有点陌生。所以也就随笔记录一些简单但很基本的操作。   我的数据库是MSSQL2005.   第一部分主要的操作包含:数据库的创建、删除,表的增、删、改,表中数据的增、删、改、查,视图的操作。 --查询数据库是否存在 if exists ( select * ...

weixin_34273479的博客 290

ThingsBoard PE专业版解决方案技术文档——温度&湿度

温湿度解决方案

weixin_67440240的博客 818

用SQL语句实现行到列的转换

 log表 id    host            name           content              status     date 1    web主机     cpu使用率     cpu使用率5%       正常       2009-8-6 2    web主机     内存使用率    内存使用率20%     正常        2009-8-6

595

乐鑫科技 EchoEar 喵伴修改自定义唤醒词的方法 EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南

标签:乐鑫科技、EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南大家好,我是一名前端开发工程师,最近在玩乐鑫科技推出的时,发现它不仅萌趣十足,还能进行全双工语音交互、多模态识别,甚至能识别你的情绪和与你互动。EchoEar 喵伴是由乐鑫科技和火山引擎扣子大模型团队合作开发的,它使用乐鑫的芯片方案(ESP32 系列)+ 火山引擎扣子大模型,支持 WiFi 连接和本地处理,长记忆能力可以让它记住用户的偏好与习惯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1881

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Oracle行转换列SQL语句

  select fmonth,sum(decode(factionid,1,fcount,0)) as factionid1,sum(decode(factionid,2,fcount,0)) as factionid2 from   (    select fmonth,factionid,count(*) as fcount from     (      select a.*,to_cha

zhangfaji的专栏 804

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

mysql列转列语句,SQL:在MySQL中将行转换为列(SELECT语句)

I got table orders and order_comments. Each order can have from 0 to n comments. I would like to get list of all orders with their comments in a sepcific order.Table orders:order_id | order_nr1 | 5252...

weixin_39941620的博客 366

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

查询sql 行变列

查询语句,行变列的经典用法 教师号  星期号 是否有课  1    2   有  1    3   有  2    1   有  3    2   有`  1    2   有 写一条sql语句让你变为这样的表 教师号 星期一 星期二 星期三  1       2   1   2   1     3       1 各星期下的数字表示:对应的教师在星期几已经...

三百亩 197

简单学会SQL中列行转换

今天第一次接触SQL列行转换,自己是利用case when实现。 一:关于case when的语法 case [col_name] when [value1] then [result1] else [default] end 其实类似于C语言中的switch case,先判断case里面的,在于when做判断。说的不是太清楚,后面会有例子来说明 **二:案例说明 ** 图一:原department表(题目来自于leetcode) 目标:列行转换,实现图二 在这里插入代码片: 第一步:先按照月份(mon

秃头菜鸟的博客 1014

db2数据库中的行转列和列转行

一、行转列 给出下面的数据: CREATE TABLE Sales (Year INT, Quarter INT, Results INT) YEAR QUARTER RESULTS ----------- ----------- ----------- 2004 1 20 2004 ...

Gorden的博客 6611

SQL 行转列,列转行(case when)

使用SQL语言为Mysql 1.列转行 创建表格: create table if not exists student( name varchar(20), subject varchar(10), score int(10)); 插入数据后: insert into student values ('张三','语文',76), ('张三','数学',86), ('张三','体育',88), ('李四','语文',78), ('李四','数学',80), ('李四','体育',90);

weixin_45456209的博客 3771

SQL Server行列转换

1、行列转换 创建创建学生成绩表并添加学生成绩信息。 /*-创建学生成绩表-*/ CREATE TABLE StuScore ( StuName VARCHAR(20), --姓名 Subject VARCHAR(20), --科目 Score INT --成绩 ); /*-添加学生成绩信息-*/ INSERT INTO StuScore VAL...

pan_junbiao的博客 1万+

Codex子代理系统:AI编程团队化分工实践

在AI编程领域,模型分工协作正成为提升效率的关键技术。通过构建专业化的子代理系统,开发者可以将复杂任务拆解为多个专业角色并行处理,其核心原理在于上下文隔离与模型分流机制。这种架构不仅能避免信息污染,还能根据任务特性智能分配GPT-5.4、Claude-3等不同模型资源,实测可降低30%API成本。典型应用场景包括微服务开发中的安全审查、文档生成等环节,其中security-auditor等预定义角色通过沙箱隔离确保企业级安全性。项目提供的136+个专业代理模板,使AI团队化协作成为可能,特别适合金融、医疗等

weixin_33770878的博客 742

SQL语句查询结果由行变为列[辉]

Q: 用SQL语句,把表中的数据由行变为列.查询前:ID 姓名 科目 分数1 张三 语文 652 张三 数学 853 张三 外语 754 李四 语文 905 李四 数学 606 李四 外语 50查询后:姓名 语文 数学 外语李四 90 60 50张三 65 85 75A:1.先建表.create table SCORETABLE( ID int not null primary key, NA

流感Class 749
上一篇: Excel2007 和excel2010实现分类汇总
下一篇: case多条件查询
firefly_2002
博客等级 码龄14年 434粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值