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的写法实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python向数据库中添加参数_第四篇:python操作数据库时的传参问题

python在操作数据库执行sql的时候我们经常会遇到传参问题&#xff0c;以下是我总结的几种方法&#xff1a; 1、格式化字符串 city beijing cur.execute(“SELECT * FROM %s WHERE city %s”, city) 2、使用字典传递 sql “INSERT INTO user VALUES(%(username)s, %(password…

【GIT】使用Git命令窗口将本地工程提交至远程GitHub

目标&#xff1a; 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub。 2.方便园友的同时也方便自己以后解决此类问题。 步骤&#xff1a; 1.首先登陆GitHub网站https://github.com/ 2.新建Repository 3.新建TicketBrushSystem的Repository&#xff0c;其中红框的几处可…

制作vb dll的总结

前段时间&#xff0c;同学接了一个项目&#xff0c;在网页上显示autoCAD的图。在做项目的过程中&#xff0c;遇到一个棘手的问题。在使用vb语言开发的第三方插件中&#xff0c;有一个函数是地址传值的方式传参。想在js中调用该函数&#xff0c;但是&#xff0c;js不支持类似指针…

[ASP,VB] - 利用ASP调用API COM接口实现开关机

来源&#xff1a;http://www.111cn.net/asp/3/35f5b04c0c9f40c9f03a1b56d641ac3f.htm 服务器脚本要控制些开关机命令模式的知都要调用win api接口来实现了&#xff0c;下面我们来看一个asp调用com实例开关机功能吧。ASP通过这个组件调用系统API&#xff0c;然后按照不同的重启和…

导致oracle 控制文件坏,异常断电导致ORACLE控制文件等受到破坏的处理

故障现象&#xff1a;客户某台WINDOWS服务器掉电&#xff0c;ORACLE数据库STARTUP提示控制文件CONTROL01.CTL、CONTROL02.CTL被破坏。一、处理控制文件异常故障方法&#xff1a;直接拷贝CONTROL0一、处理控制文件异常故障二、尝试启动SQL> startup;ORACLE例程已经启动。Tota…

softmax ce loss_手写softmax和cross entropy

import 解释下给定的数据&#xff0c;x假设是fc layer的输出&#xff0c;可以看到这里x是(3,3)的&#xff0c;也就是batch_size3&#xff0c;n_classes3。但是label给出了三个数&#xff0c;取值是0&#xff0c;1&#xff0c;因此这里必须要将label先变成one_hot的形式才能在cr…

ListView中加入Button后,Button的点击事件和ListView的点击事件冲突

1.在ItemView配置的xml文件里的根节点加入属性android:descendantFocusability"blocksDescendants" 2.在要加入事件的控件上加入android:focusable"false

asp.net Session丢失问题

首先了解一下asp.net Session的实现asp.net的Session是基于HttpModule技术做的&#xff0c;HttpModule可以在请求被处理之前&#xff0c;对请求进行状态控制&#xff0c;由于Session本身就是用来做状态维护的&#xff0c;因此用HttpModule做Session是再合适不过了。原因1&#…

kafka php 0.8,php5.6 centos7 kafka0.8.1

# 首先在保证php已经正确安装的情况下&#xff1a;# 安装jdk(本人安装jdk7) 和 scala 因为kafka基于scala开发# 之后解压安装包 进入 运行命令 ./gradlew jar # 会下载一些包 # 首先运行 zookeeper ./bin/zookeeper-server-start.sh ./config/zookeeper.properties# 之后运行k…

day02(下)_运算符

首先了解java运算符的优先级和结合性: 常用转义字符表: 示例1 取余/字符串/转义字符: class operator1 {public static void main(String[] args){//取余System.out.println(-1%5);//-1System.out.println(1%-5);//1与左边的操作数同号System.out.println(3.1%2.5);//字符串:字…

activity 生命周期_如何理解安卓activity的生命周期(on-create篇)?

个人认为用类比的方式来学习新事物比较容易接受。我这里用蝴蝶的一生来做比喻。OnCreate阶段就像是蝴蝶的幼虫刚出卵里孵化出来&#xff0c;蝴蝶的一生只可能出生一次&#xff0c;oncreate只能被创建一次。蝴蝶刚出生的时候还不是蝴蝶&#xff0c;而是一只毛毛虫一样的东西&…

【十大经典数据挖掘算法】k-means

【十大经典数据挖掘算法】系列 C4.5K-MeansSVMAprioriEMPageRankAdaBoostkNNNave BayesCART1. 引言 k-means与kNN虽然都是以k打头&#xff0c;但却是两类算法——kNN为监督学习中的分类算法&#xff0c;而k-means则是非监督学习中的聚类算法&#xff1b;二者相同之处&#xff1…

php strstr 效率,PHP中的stristr(),strstr(),strpos()速度比较

测速代码:function getmicrotime(){list($usec, $sec) explode(" ",microtime());return ((float)$usec (float)$sec);}$time_start getmicrotime();$string"xxxddxx";$find"d";for ($i0;$i<300000;$i){if (stristr($string,$find))//if (…

ajax获取数据用弹窗显示_Vue之 点击返回弹出推荐商品弹窗

阅读本文约需要5分钟大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了VUE 之 v-on指令的知识&#xff0c;今天跟大家分享下Vue之 点击返回弹出推荐商品弹窗的知识。…

Navicat 编辑器自动完成代码功能讲解

2019独角兽企业重金招聘Python工程师标准>>> Navicat 提供广泛的编辑器高级功能&#xff0c;例如&#xff1a;编辑代码功能、智能自动完成代码、设置 SQL 格式及更多。本教程将介绍关于自动完成代码的操作。 Navicat下载地址&#xff1a;http://www.formysql.com/xi…

win2008的搜索功能就是个鸡肋

搜索文件名做得还好&#xff0c;搜索文本关键字连98都不如。 还有远程功能&#xff0c;一个终端登陆了&#xff0c;本地马上就注销了&#xff0c;还比不上WIN03转载于:https://www.cnblogs.com/LCX/archive/2010/04/19/1715698.html

DNN Experience

DNN Experience DNN编译导致异常。在做模块开发时&#xff0c;引用DNN原始Dll文件时&#xff0c;设置为不覆盖原有文件。不然容易导错误异常。 在开发DNN Schedule 或其他扩展功能时。因为此时不在站点的页面文件下&#xff0c;不能直接引用DNN命名空间下的很多全局变量。会造成…

oracle 导入excel时间格式,将.xls或者.excel格式的数据导入到Oracle中

本文档来自:[url]http://hi.baidu.com/wangbin_529/blog/item/6191d74b06b83c2b09f7efbd.html[/url]1、将xls格式另存为cvs(逗号隔开)。例如&#xff1a;左边为xls的表格;右边为转换成csv的文档,保存csv文档到E盘。[img]http://hiphotos.baidu.com/smile_%B1%B4/pic/item/a536c…

com 组件调用不起来_AwesomeGithub组件化探索之旅

阅读前请点击右上角“关注”&#xff0c;每天免费获取Android知识解析及面试解答。Android架构解析&#xff0c;只做职场干货&#xff0c;完全免费分享&#xff01;之前一直听说过组件化开发&#xff0c;而且面试也有这方面的提问&#xff0c;但都未曾有涉及具体的项目。所以就…

将团队迁移到可视化项目管理软件

自2000年代中期&#xff0c;“Scrum”项目管理&#xff08;PM&#xff09;一直统治着软件开发方法。它的迭代结构、频繁会议和清晰的层次结构使其成为受频繁变化的客户需求和条件管制的行业的明显选择。因此&#xff0c;大多数团队习惯基于 Scrum项目管理应用管理开发过程。 \\…