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(列变行、自定义查询结构、将字符串分割为多条记录)的更多相关文章

  1. 160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group by ...

  2. [转]Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行

    原文地址:http://blog.csdn.net/seandba/article/details/72730657 函数PIVOT.UNPIVOT转置函数实现行转列.列转行,效果如下图所示: 1.P ...

  3. Oracle:分割字符串 取TOP N条记录

    oracle数据库,表数据如下: ids                           id 3,4,5                        7 13,14,15,16         ...

  4. oracle sql小结(主要讲横列转换的例子)decode 以及case

    --建表 create table kecheng( id NUMBER, name VARCHAR2(20), course VARCHAR2(20), score NUMBER); --插入数据i ...

  5. Oracle SQL七次提速技巧

    以下SQL执行时间按序号递减. 1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池. create or repl ...

  6. oracle sql小结(主要讲横列转换的例子)group by以及wmsys.wm_concat()的使用

    ---计算九月每个电厂的数量select f_dcname,count(f_dcname) as 九月份的数量 from W_EC_PLACESTATION_COLLECT twhere f_coll ...

  7. Oracle随笔之用拆分后的列数据关联表查询

    -----------------------建表------------------------- create table test(id int, plist varchar2(30)) ; c ...

  8. 【ORACLE】SQL查询出每个组中的第一条记录

    CREATE TABLE [TestTable] ( ) NOT NULL , ) NOT NULL , ) ))) GO ALTER TABLE [TestTable] ADD PRIMARY KE ...

  9. oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)

    语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...

  10. sql语句查询出表里符合条件的第二条记录的方法

    创建用到的表的SQL CREATE TABLE [dbo].[emp_pay]( [employeeID] [int] NOT NULL, [base_pay] [money] NOT NULL, [ ...

随机推荐

  1. TdxpageControl融合窗口和free

    for I := cxpgcntrl1.PageCount - 1 downto 0do begin if cxpgcntrl1.Pages[i].Caption <> '首页' then ...

  2. langchain0.3教程:聊天机器人进阶之方法调用

    我们思考一个问题:大语言模型是否能帮我们做更多的事情,比如帮我们发送邮件.默认情况下让大模型帮我们发送邮件,大模型会这样回复我们: 可以看到,大模型无法发送邮件,它只会帮我们生成一个邮件模板,然后让我 ...

  3. Devops相关考试和认证

    Devops相关考试和认证 Red Hat Certified System Administrator (RHCSA) 能够执行以下任务: 了解和运用必要的工具来处理文件.目录.命令行环境和文档 操 ...

  4. ubuntu 22.04安装docker

    一.安装 更新软件包索引: sudo apt-get update 允许APT使用HTTPS: sudo apt-get install -y apt-transport-https ca-certi ...

  5. python tkinker答题工具简易实现

    分享一个简单的python tkinker实现的答题工具,效果参见https://www.bilibili.com/video/BV13e4y1E71d/ 点击查看代码 import tkinter ...

  6. python爬虫爬取B站视频字幕,简单的数据处理(pandas将字幕写入到CSV文件中)

    上文,我们爬取到B站视频的字幕:https://www.cnblogs.com/becks/p/14540355.html 这篇,讲讲怎么把爬到的字幕写到CSV文件中,以便用于后面的分析 本文主要用到 ...

  7. ESP32S3播放音频文件

    ESP32S3播放音频文件 硬件基于立创实战派esp32s3 软件代码基于立创实战派教程修改,分析 播放PCM格式音频 原理图分析 音频芯片ES8311 ES8311_I2C_ADD:0x18 音频功 ...

  8. App自动化的元素定位

    一.Appium定位步骤 打开appium,输入本地IP,点击启动服务器 1.点击启动检查器会话 2.配置所需功能,点击启动会话 二.App页面元素 App页面元素分为布局和控件两种 1.布局 Fra ...

  9. cesium裁切面实践

    cesium裁切面实践:沙盒地址 (打不开的自行科学访问) 裁切面法线方向指向保留的部分,本案例通过法线配合unionClippingRegions参数实现相比官方案例没有的:多裁切面互裁,裁两边留中 ...

  10. Java编程--抽象类和接口的区别

    No. 区别 抽象类 接口 1 关键字 abstract class interface 2 组成 构造方法.普通方法.抽象方法.static方法.常量.变量 抽象方法.全局常量 3 子类使用 cla ...