oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)
100分求一个数据库查询语句(ORACLE 11g)
一张表tabl1 如下:
epqname createtime endtime
设备1 2014.10.01 11:00:00 2014.10.01 13:22:00
设备2 2014.10.27 11:00:00 2014.10.27 14:10:00
设备3 2014.11.11 14:00:00 2014.11.11 15:00:00
设备4 2014.11.29 11:00:00 2014.11.29 16:00:00
我想查询出来结果,显示出,每个设备每天运转的小时数,不足1小时的,算1小时(1小时25分,1小时10分钟 都算2小时)
将日期作为列名,显示当天运转的时间。
epqname 2014.10.01 2014.10.27 2014.11.11 2014.11.29
设备1 3 0 0 0
设备2 0 4 0 0
设备3 0 0 1 0
设备4 0 0 0 5
------解决思路----------------------
本帖最后由 bw555 于 2014-11-27 11:12:47 编辑
先给你写一个不跨天的情况
with T AS (
SELECT epqname,TRUNC(createtime) D,CEIL((ENDTIME-createtime) *24) AS S
FROM tabl1)
SELECT epqname,
SUM(DECODE(D,TO_DATE('2014.10.01','YYYY.MM.DD'),S)) AS "2014.10.01",
SUM(DECODE(D,TO_DATE('2014.10.27','YYYY.MM.DD'),S)) AS "2014.10.27",
SUM(DECODE(D,TO_DATE('2014.11.11','YYYY.MM.DD'),S)) AS "2014.11.11",
SUM(DECODE(D,TO_DATE('2014.11.29','YYYY.MM.DD'),S)) AS "2014.11.29"
FROM T
GROUP BY epqname
------解决思路----------------------
如果你的createtime和endtime是date类型的话(如果不是要用to_date转化一下数据类型),借鉴下面代码。
select epqname,
sum(case when to_char(t.createtime,'yyyy.mm.dd')='2014.10.01'
then ceil((t.endtime-t.createtime)*24) else 0 end) "2014.10.01",
sum(case when to_char(t.createtime,'yyyy.mm.dd')='2014.10.27'
then ceil((t.endtime-t.createtime)*24) else 0 end) "2014.10.27",
sum(case when to_char(t.createtime,'yyyy.mm.dd')='2014.11.11'
then ceil((t.endtime-t.createtime)*24) else 0 end) "2014.11.11",
sum(case when to_char(t.createtime,'yyyy.mm.dd')='2014.11.29'
then ceil((t.endtime-t.createtime)*24) else 0 end) "2014.11.29"
from tabl1 t
group by epqname
order by epqname;
------解决思路----------------------
一、不确定列直接查询是没办法实现的提供两个方案
1、动态拼接sql语句,然后生成视图,然后select * from 视图
2、动态拼接sql语句,利用游标,将结果循环打印输出
二、存在跨天的情况,需要进行拆分
用下面的语句的查询结果代替原表,未测试,你先执行下看看效果吧
select epqname,
greatest(trunc(createtime)+level-1,createtime) createtime,
least(trunc(createtime)+level,endtime) endtime
from tabl1
connect by trunc(createtime)+level-1<=trunc(endtime)
and rowid=prior rowid
and prior dbms_random.value is not null
------解决思路----------------------
动态行转不定列的方法,在9#已经说明,采用视图实现的方式可以参考下面链接,大同小异
参考3#固定列数的sql写法,拼接sql语句,然后动态创建视图,然后select * from 视图
oracle行转列(动态行转不定列)
目前的oracle版本里没有任何可以直接的行转动态列方法,只能借助视图、游标之类的工具间接实现
如果从xml中select 可以借助pivot any的写法实现
oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)相关推荐
- 查询客户时,提示“查询已超出200行,请限制查询“
查询客户时,提示"查询已超出200行,请限制查询" 在EBS中,我们查询客户时如果输入的参数较少,系统会提示"查询已超出200行,请限制查询".如下图: 更新配 ...
- mysql 查找数据过程_mysql数据库查询过程探究和优化建议
查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...
- mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句
本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...
- mysql500万数据查询速度_是什么影响了数据库查询速度
一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...
- 分享3个CPU跑分数据库查询,AMD Inter cpu各项分数查询
https://www.cpu-monkey.com/en/ https://us.rebusfarm.net/en/tempbench?view=benchmark https://www.cgdi ...
- oracle数据库查询表语句,oracle数据库重要的查询语句
查看所有数据文件(dbf文件)的存放位置 SQL> select name from v$datafile; 标红色的为默认表空间文件 SQL> select name from v$da ...
- oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- 类型的值怎么用es查询_腾讯游戏信用分怎么查询在哪看 有什么用怎么提升介绍...
腾讯游戏信用分查询方法是很多小伙伴们都不知道的,在腾讯游戏中腾讯信用分是极其重要的,那么各位小伙伴们知道腾讯信用分怎么查吗?相信还有很多小伙伴不太清楚,那么接下来和大家一起分享一下腾讯游戏信用分查询方 ...
- mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...
之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...
最新文章
- 今天决定写一篇LNMP的深入调优,
- 2013年新疆中小学教师计算机水平考试机试题(复习版),2013年新疆中小学教师计算机水平考试笔试题(复习版8套含答案)...
- python numpy库安装winerror5_(转载)Numpy安装中遇到的问题和解决方法
- {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
- Java throw:异常的抛出
- 解题报告 『活动安排(贪心)』
- 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟
- 前端基础进阶(七):函数与函数式编程
- 万字长文,SpringSecurity
- SYBASE数据导入技巧
- RxHttp 一条链发送请求之注解处理器 Generated API(四)
- Java swing实现简单的浏览器源码免费分享
- 一步一步写算法(之排序二叉树删除-2)
- 数据结构笔记(二)--- 顺序实现线性表
- 【UVA12230】Crossing Rivers(概率/期望)
- Silvaco TCAD仿真基础2
- Pinterest Copy to China——meterial collect
- Excel常用工具---在线版V1.5使用说明
- 爬虫——bs4测试——test.html
- ubuntu系统服务器网速测试方法
热门文章
- Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable...
- 第八模块:算法设计模式、企业应用 第2章 企业应用工具学习
- LaTeX 安装配置 OSX
- overfitting(过度拟合)的概念
- javascript --- 使用语法糖class定义函数
- 电脑下载的M4A格式文件怎么转换为MP3格式
- django 利用PIL 保存图片
- 【VMware vSAN 6.6】6.2.启用性能服务:vSAN硬件服务器解决方案
- AlienVault Ossim各版本镜像下载地址
- _M_invoke(_Index_tuple_Indices...)