ORACLE--SQL日常问题和技巧1(列变行、自定义查询结构、将字符串分割为多条记录)
1.ORACLE列变行加合计:

查询结果为

1 SELECT
2 nvl( F, '合计' ) F,
3 sum( S1 ) S1,
4 sum( S2 ) S2,
5 sum( S3 ) S3
6 FROM
7 (SELECT
8 F,
9 sum( decode( S, 'S1', N, NULL ) ) S1,
10 sum( decode( S, 'S2', N, NULL ) ) S2,
11 sum( decode( S, 'S3', N, NULL ) ) S3
12 FROM
13 LQG_TEST
14 GROUP BY
15 F)
16 GROUP BY
17 rollup (
18 F)
2.自定义查询结构,场景如下:
查询语文,数学,英语,科学四门学科的分数,但是表里只有数学和英语。如图:

查询结果为:

看看SQL吧(nvl函数用于oracle):
1 SELECT
2 TMP1.COURSE AS COURSE,
3 NVL ( TMP2.SCORE, 0 ) AS SCORE
4 FROM
5 (
6 SELECT
7 '语文' COURSE
8 FROM
9 DUAL UNION ALL
10 SELECT
11 '数学' COURSE
12 FROM
13 DUAL UNION ALL
14 SELECT
15 '英语' COURSE
16 FROM
17 DUAL UNION ALL
18 SELECT
19 '科学' COURSE
20 FROM
21 DUAL
22 ) TMP1
23 LEFT JOIN (
24 SELECT
25 CASE
26
27 WHEN
28 COURSE = 'CHINESE' THEN
29 '语文'
30 WHEN COURSE = 'MATH' THEN
31 '数学'
32 WHEN COURSE = 'ENGLISH' THEN
33 '英语'
34 WHEN COURSE = 'SCIENCE' THEN
35 '科学'
36 END AS COURSE,
37 SCORE
38 FROM
39 LGQ_TEST
40 ) TMP2 ON TMP1.COURSE = TMP2.COURSE
3.将字符串按某字符分割为多条记录
1 SELECT
2 REGEXP_SUBSTR( '赵-钱-孙-李', '[^-]+', 1, ROWNUM )
3 FROM
4 dual CONNECT BY ROWNUM <= LENGTH( '赵-钱-孙-李' ) - LENGTH(
5 regexp_replace( '赵-钱-孙-李', '-', '' )) + 1

ORACLE--SQL日常问题和技巧1(列变行、自定义查询结构、将字符串分割为多条记录)的更多相关文章
- 160804、oracle查询:取出每组中的第一条记录
oracle查询:取出每组中的第一条记录按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group by ...
- [转]Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行
原文地址:http://blog.csdn.net/seandba/article/details/72730657 函数PIVOT.UNPIVOT转置函数实现行转列.列转行,效果如下图所示: 1.P ...
- Oracle:分割字符串 取TOP N条记录
oracle数据库,表数据如下: ids id 3,4,5 7 13,14,15,16 ...
- oracle sql小结(主要讲横列转换的例子)decode 以及case
--建表 create table kecheng( id NUMBER, name VARCHAR2(20), course VARCHAR2(20), score NUMBER); --插入数据i ...
- Oracle SQL七次提速技巧
以下SQL执行时间按序号递减. 1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池. create or repl ...
- oracle sql小结(主要讲横列转换的例子)group by以及wmsys.wm_concat()的使用
---计算九月每个电厂的数量select f_dcname,count(f_dcname) as 九月份的数量 from W_EC_PLACESTATION_COLLECT twhere f_coll ...
- Oracle随笔之用拆分后的列数据关联表查询
-----------------------建表------------------------- create table test(id int, plist varchar2(30)) ; c ...
- 【ORACLE】SQL查询出每个组中的第一条记录
CREATE TABLE [TestTable] ( ) NOT NULL , ) NOT NULL , ) ))) GO ALTER TABLE [TestTable] ADD PRIMARY KE ...
- oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)
语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...
- sql语句查询出表里符合条件的第二条记录的方法
创建用到的表的SQL CREATE TABLE [dbo].[emp_pay]( [employeeID] [int] NOT NULL, [base_pay] [money] NOT NULL, [ ...
随机推荐
- yolov5常用命令记录
一.准备深度学习环境 首先,确保你的计算机上已经安装了Python.PyTorch以及CUDA等必要的深度学习框架和库.YOLOv5对Python版本和PyTorch版本有一定的要求,通常建议使用Py ...
- 运维必备:基于 Harbor 的 Helm Charts 批量拉取,从配置到自动化脚本
引言 在企业级 Kubernetes 环境中,Harbor 作为主流的镜像与 Helm Chart 管理工具,常被用于存储 Helm Charts.但在迁移.备份或离线部署场景中,批量拉取 Harbo ...
- ArrayBlockingQueue的put方法底层原理
一.ArrayBlockingQueue的put方法底层原理 ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个基于数组实现的有界阻塞队 ...
- javaWeb基础之Tomcat
一.Tomcat:web服务器软件 1. 下载:http://tomcat.apache.org/ 2. 安装:解压压缩包即可. * 注意:安装目录建议不要有中文和空格 3. 卸载:删除目录就行了 4 ...
- java基础之String类、Math类、Arrays类、Collections类
一.String类 概述:程序中所有的双引号字符串,都是String类的对象.(就算没有new,照样算是) 特点: 1.字符串的内容用不可变[重点] 2.因为字符串[String对象]是不可变的,所以 ...
- Asp.net mvc基础(十三)集合常用的扩展方法和Linq语句
详情参考:C#之集合常用扩展方法与Linq - 冯继强fjq - 博客园 (cnblogs.com)
- StarBlog和Masuit.MyBlogs博客程序学习使用日记(一)
最近买了个简单的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(https://gitee.com/ysgdaydayup/DotNetGuide) 在上面有列开源的博客框架,我是 ...
- 【笔记】Git|将git仓库中所有的 commit 合成一个,清空所有 git 提交记录
在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息.因此会存在 将仓库中所有 commit 合成一个 的需求. 直觉上,往往会用 reba ...
- P6790 [SNOI2020] 生成树 题解
感觉很多题解都说的不是很清楚?如何将三操作与二操作合并起来一起处理好像都没有提到.(也有可能是我太菜了,看了半天才懂) 思路 考虑这个图一定是一个广义串并联图.为什么呢? 广义串并联图的定义是不存在一 ...
- dom绑定事件操作
s7.html <!DOCTYPE html><html lang="en"><head> <meta charset=" ...