行列转换的SQL语句
数据类型
Oracle数据库。
行转列
表名:CM_IDVALUE ,原始数据:
ID | TEXTVALUE | TYPE |
---|---|---|
12346 | A,B,C,D | String |
12346 | 1111111 | NUMBER |
方案一
with a as
(select t.ID,t.TYPE,t.TEXTVALUE from CM_IDVALUE t where t.TYPE='String'),
b as
(select t.ID,t.TYPE,t.TEXTVALUE from CM_IDVALUE t where t.TYPE='NUMBER')
select t1.ID,t1.TEXTVALUE String,t2.ID,t2.TEXTVALUE NUMBER from
a t1 left outer join b t2 on t1.ID = t2.ID
where t1.ID='12346'
方案二
select *
from (select ID,TEXTVALUE,TYPE from CM_IDVALUE)pivot (sum(TEXTVALUE) for TYPE in('String'STRING,'NUMBER'NUMBER ));/*注释:若sum()函数报错,则使用max()函数替换。*/
效果:
ID | STRING | NUMBER |
---|---|---|
12346 | A,B,C,D | 1111111 |
列转行
表名:CM_IDVALUE ,原始数据:
ID | TEXTVALUE |
---|---|
12346 | A,B,C,D |
可用union all来实现,将ID和TEXTVALUE两列转成多行显示,SQL语句如下:
select to_char(id) LINE1 from CM_IDVALUE where id='12346'
union all
select TEXTVALUE from CM_IDVALUE where id='12346';
效果:
LINE1 |
---|
12346 |
A,B,C,D |
其它
单列转多列
表名:CM_IDVALUE ,原始数据:
ID | TEXTVALUE |
---|---|
12346 | A,B,C,D |
根据分号将TEXTVALUE 列拆分成LINE1、LINE2、LINE3、LINE4列显示,SQL语句如下:
SELECT T.ID,
REGEXP_SUBSTR(T.TEXTVALUE,'[^,]+',1) AS LINE1,
REGEXP_SUBSTR(T.TEXTVALUE,'[^,]+',3) AS LINE2,
REGEXP_SUBSTR(T.TEXTVALUE,'[^,]+',5) AS LINE3,
REGEXP_SUBSTR(T.TEXTVALUE,'[^,]+',7) AS LINE4
FROM CM_IDVALUE T WHERE T.ID='12346';
效果:
ID | LINE1 | LINE2 | LINE3 | LINE4 |
---|---|---|---|---|
12346 | A | B | C | D |
多列转单列
表名:CM_IDVALUE ,原始数据:
ID | LINE1 | LINE2 | LINE3 | LINE4 |
---|---|---|---|---|
12346 | A | B | C | D |
将上述LINE1、LINE2、LINE3、LINE4列合并成TEXTVALUE 列,SQL语句如下:
SELECT ID,LINE1||','||LINE2||','||LINE3||','||LINE4 as TEXTVALUE
FROM CM_IDVALUE T
WHERE T.ID='12346';
效果:
ID | TEXTVALUE |
---|---|
12346 | A,B,C,D |
行列转换的SQL语句相关推荐
- C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
public string GetInsertStr<T>(List<T> obj,string tableName) {string str = string.Format( ...
- 将mysql语句转换为sql_数据库-转换sql语句
文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...
- SQL行列转换6种方法
在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解 ...
- 笔试 -- SQL语句之横竖表转换
文章目录 一.表结构 二.竖表转横表 1-1 case when then 1-2 pivot 三.横表转竖表 1-1 UNION ALL 1-2 unpivot 最近笔试中有 [将竖表转换为横表]的 ...
- MS-SQL Server 基础类 - SQL语句
网址收藏夹 免费申请! 首页 |收藏夹 | 笑话 | 贴吧 | 交友 | 留言 | 软件 | 超市 | 网页特效 | 酷站导航 | 论坛 新闻 | 同学录 | 图片 | 跑商 | 动画 | 音乐 ...
- 基础类 - SQL语句
基础类 - SQL语句 转载请标明出处: http://blog.csdn.net/hz/archive/2006/03/01/613376.asp 本文来自 CSDN 博客.x sql server ...
- 如何将SQL语句进行自动翻译
如何将SQL语句进行自动翻译 这里我们利用SQL-to-Text Generation with Graph-to-Sequence Model一文, 给大家简单介绍一下如何对SQL语句进行自动翻译 ...
- Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc
1.经典的select sql语句 //注意:包含空值的数学表达式求出的结果为空值 SQL> select sal+comm from emp; //连接员工编号与员工姓名这两个字段 SQL&g ...
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- 一些sql 语句(行列转换等)
1. 行列转换--普通 假设有张学生成绩表(CJ)如下 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 8 ...
最新文章
- 我的 FPGA 学习历程(13)—— 电子钟项目
- socket未读消息 如何设计_如何设计IM系统的消息架构?
- 【ObjectC—浅copy和深copy】
- 2022我会成为高手吗
- php soap 两个版本_Ceontos 安装php7以上的版本
- 略论bs架构设计的几种模式
- Spring mvc项目导出jar包无法识别正常映射问题
- cpu矿工cpuminer-multi编译与使用
- FANUC NC GUIDE PRO 17.1虚拟机(XP系统)
- [web开发] Vue+Spring Boot 上海大学预约系统开发记录
- CCbot是什么梗?
- 基于Java spring的实验室设备管理系统的设计与实现
- 地图学类毕业论文文献包含哪些?
- linux 快照工具,技术预览:CentOS 7中利用Snapper GUI管理系统快照
- Js 方法函数记录笔记
- DeepMind 最新发文:AlphaZero 的黑箱打开了
- MacOS 软件版本更新Monterey12.1版之后L2TP无法正常访问内网服务解决方案
- UIKeyboard 键盘
- 老虎证券 2018 java编程笔试题
- 渗透攻防必备工具(基础篇,收藏起来)