oracle 行转列sql语句,行转列(sql行转列)

本文介绍了如何在SQL中实现行转列,包括Oracle和SQL Server的静态及动态方法。提供了创建测试数据、使用CASE语句和PIVOT运算符的示例,以及动态参数化的SQL脚本,适用于不同版本的SQL Server。
摘要由CSDN通过智能技术生成

sql语句行转列?怎么转啊

iu4fp2meaxs.jpg

select MIN(id) as ID, name, sex,

sum(case when num=2 then 2 end) as num2,

sum(case when num=3 then 3 end) as num3,

sum(case when num=4 then 4 end) as num4,

sum(case when num=5 then 5 end) as num5

from 表名 group by name,sex

SQL?Server?动态行转列

c0eodnjnm0i.jpg

一.本文所涉及的内容(Contents)

本文所涉及的内容(Contents)

背景(Contexts)

实现代码(SQL Codes)

方法一:使用拼接SQL,静态列字段;

方法二:使用拼接SQL,动态列字段;

方法三:使用PIVOT关系运算符,静态列字段;

方法四:使用PIVOT关系运算符,动态列字段;

二.背景(Contexts)

其实行转列并不是一个什么新鲜的话题了,甚至已经被大家说到烂了,网上的很多例子多多少少都有些问题,所以我希望能让大家快速的看到执行的效果,所以在动态列的基础上再把表、分组字段、行转列字段、值这四个行转列固定需要的值变成真正意义的参数化,大家只需要根据自己的环境,设置参数值,马上就能看到效果了(可以直接跳转至:“参数化动态PIVOT行转列”查看具体的脚本代码)。行转列的效果图如图1所示:

(图1:行转列效果图)

三.实现代码(SQL Codes)

(一) 首先我们先创建一个测试表,往里面插入测试数据,返回表记录如图2所示:

--创建测试表

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestRows2Columns]') AND type in (N'U'))

DROP TABLE [dbo].[TestRows2Columns]

GO

CREATE TABLE [dbo].[TestRows2Columns](

[Id] [int] IDENTITY(1,1) NOT NULL,

[UserName] [nvarchar](50) NULL,

[Subject] [nvarchar](50) NULL,

[Source] [numeric](18, 0) NULL

) ON [PRIMARY]

GO

--插入测试数据

INSERT INTO [TestRows2Columns] ([UserName],[Subject],[Source])

SELECT N'张三',N'语文',60 UNION ALL

SELECT N'李四',N'数学',70 UNION ALL

SELECT N'王五',N'英语',80 UNION ALL

SELECT N'王五',N'数学',75 UNION ALL

SELECT N'王五',N'语文',57 UNION ALL

SELECT N'李四',N'语文',80 UNION ALL

SELECT N'张三',N'英语',100

GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值