`

oracle中断号的取得

阅读更多
1.根据号码求出号段
-- 
WITH t AS (
    SELECT '1' tid,'0001' num FROM DUAL UNION ALL
    SELECT '1' tid,'0002' num FROM DUAL UNION ALL
    SELECT '1' tid,'0003' num FROM DUAL UNION ALL
    SELECT '1' tid,'0005' num FROM DUAL UNION ALL
    SELECT '1' tid,'0007' num FROM DUAL UNION ALL
    SELECT '2' tid,'0011' num FROM DUAL UNION ALL
    SELECT '2' tid,'0012' num FROM DUAL UNION ALL
    SELECT '2' tid,'0023' num FROM DUAL UNION ALL
    SELECT '2' tid,'0035' num FROM DUAL UNION ALL
    SELECT '1' tid,'0008' num FROM DUAL UNION ALL
    SELECT '2' tid,'0036' num FROM DUAL
)

-- 表的数据
TID NUM
--- ----
1   0001
1   0002
1   0003
1   0005
1   0007
2   0011
2   0012
2   0023
2   0035
1   0008
2   0036

-- 期望结果:
TID MINNUM MAXNUM
--- ------ ------
1   0001   0003
1   0005   0005
1   0007   0008
2   0011   0012
2   0023   0023
2   0035   0036

-- SQL1:
SELECT n.tid,MIN(n.num) minnum,MAX(n.num) maxnum FROM (
  SELECT m.tid,
         m.num,
         m.num - ROWNUM group_num
    FROM (SELECT t.tid,
                 t.num
            FROM t
           ORDER BY t.tid,
                    t.num) m
) n
GROUP BY n.tid,n.group_num
ORDER BY 1,2

-- SQL2:







select t.* from tb t

sn
1
2
4
6
8
13
14

SELECT DISTINCT s + LEVEL - 1 miss_no
  FROM (SELECT lag(sn, 1) over(ORDER BY sn) + 1 s,
       sn - 1 e
  FROM tb)
 START WITH e - s >= 0
CONNECT BY LEVEL <= e - s + 1
 ORDER BY 1;


结果:
miss_no
3
5
7
9
10
11
12
SQL> WITH tb AS (
  2  SELECT 201102 month_id,0 company_id,0 type_id,500 plan_amount FROM DUAL UNION ALL
  3  SELECT 201111 month_id,2 company_id,2 type_id,600 plan_amount FROM DUAL
  4  )
  5  SELECT TO_DATE(t1.month_id, 'yyyymm') + t2.rn - 1 every_day,
  6         t1.company_id,
  7         t1.type_id,
  8         plan_amount / ((LAST_DAY(TO_DATE(t1.month_id, 'yyyymm')) -
  9         TO_DATE(t1.month_id, 'yyyymm')) + 1) avg_amount
 10    FROM tb t1,
 11         (SELECT ROWNUM rn,
 12                 lastday
 13            FROM (SELECT MAX(LAST_DAY(TO_DATE(tb.month_id, 'yyyymm')) -
 14                             TO_DATE(tb.month_id, 'yyyymm')) + 1 lastday
 15                    FROM tb)
 16          CONNECT BY ROWNUM <= lastday) t2
 17   WHERE LAST_DAY(TO_DATE(t1.month_id, 'yyyymm')) >=
 18         TO_DATE(t1.month_id, 'yyyymm') + t2.rn - 1
 19   ORDER BY t1.month_id,
 20            t2.rn
 21  ;

EVERY_DAY   COMPANY_ID    TYPE_ID AVG_AMOUNT
----------- ---------- ---------- ----------
2011/02/01           0          0 17.8571428
2011/02/02           0          0 17.8571428
2011/02/03           0          0 17.8571428
2011/02/04           0          0 17.8571428
2011/02/05           0          0 17.8571428
2011/02/06           0          0 17.8571428
2011/02/07           0          0 17.8571428
2011/02/08           0          0 17.8571428
2011/02/09           0          0 17.8571428
2011/02/10           0          0 17.8571428
2011/02/11           0          0 17.8571428
2011/02/12           0          0 17.8571428
2011/02/13           0          0 17.8571428
2011/02/14           0          0 17.8571428
2011/02/15           0          0 17.8571428
2011/02/16           0          0 17.8571428
2011/02/17           0          0 17.8571428
2011/02/18           0          0 17.8571428
2011/02/19           0          0 17.8571428
2011/02/20           0          0 17.8571428

EVERY_DAY   COMPANY_ID    TYPE_ID AVG_AMOUNT
----------- ---------- ---------- ----------
2011/02/21           0          0 17.8571428
2011/02/22           0          0 17.8571428
2011/02/23           0          0 17.8571428
2011/02/24           0          0 17.8571428
2011/02/25           0          0 17.8571428
2011/02/26           0          0 17.8571428
2011/02/27           0          0 17.8571428
2011/02/28           0          0 17.8571428
2011/11/01           2          2         20
2011/11/02           2          2         20
2011/11/03           2          2         20
2011/11/04           2          2         20
2011/11/05           2          2         20
2011/11/06           2          2         20
2011/11/07           2          2         20
2011/11/08           2          2         20
2011/11/09           2          2         20
2011/11/10           2          2         20
2011/11/11           2          2         20
2011/11/12           2          2         20
2011/11/13           2          2         20

EVERY_DAY   COMPANY_ID    TYPE_ID AVG_AMOUNT
----------- ---------- ---------- ----------
2011/11/14           2          2         20
2011/11/15           2          2         20
2011/11/16           2          2         20
2011/11/17           2          2         20
2011/11/18           2          2         20
2011/11/19           2          2         20
2011/11/20           2          2         20
2011/11/21           2          2         20
2011/11/22           2          2         20
2011/11/23           2          2         20
2011/11/24           2          2         20
2011/11/25           2          2         20
2011/11/26           2          2         20
2011/11/27           2          2         20
2011/11/28           2          2         20
2011/11/29           2          2         20
2011/11/30           2          2         20

58 rows selected


SQL> WITH tb AS (
  2      SELECT 'KC0003' min_card_id,'KC0012' max_card_id,'ww' source_dept FROM DUAL UNION ALL
  3      SELECT 'KB0006' min_card_id,'KB0010' max_card_id,'aa' source_dept FROM DUAL
  4  )
  5  SELECT SUBSTR(t1.min_card_id,1,2) || TO_CHAR(SUBSTR(t1.min_card_id,3) + rn - 1,'fm0999') card_id,
  6         t1.source_dept
  7    FROM tb t1,
  8         (SELECT ROWNUM rn
  9            FROM (SELECT MAX(SUBSTR(max_card_id,3) - SUBSTR(min_card_id,3)) + 1 loop_num
 10                    FROM tb)
 11          CONNECT BY ROWNUM <= loop_num) t2
 12    WHERE SUBSTR(max_card_id,3) >= SUBSTR(t1.min_card_id,3) + rn - 1
 13  ORDER BY t1.source_dept,t2.rn
 14  ;

CARD_ID     SOURCE_DEPT
----------- -----------
KB0006      aa
KB0007      aa
KB0008      aa
KB0009      aa
KB0010      aa
KC0003      ww
KC0004      ww
KC0005      ww
KC0006      ww
KC0007      ww
KC0008      ww
KC0009      ww
KC0010      ww
KC0011      ww
KC0012      ww

15 rows selected

分享到:
评论

相关推荐

    Oracle Data Guard最佳实践

    它通过创建和维护一个或多个备用数据库,提供对主数据库的实时复制,确保在出现故障时能够快速切换到备用数据库,从而最大限度地减少数据丢失和业务中断。以下是对Oracle Data Guard六项最佳实践的详细说明: 1. **...

    Oracle DataGuard容灾解决方案.docx

    * 灵活的数据保护功能:Oracle Data Guard 提供了最大保护、最高可用性和最高性能等模式,来帮助企业在系统性能要求和数据保护之间取得平衡。 * 自动间隔检测及其解决方案:如果主数据库与一个或更多个备用数据库...

    基于Linux的Oracle Data Guard数据容灾系统.pdf

    该技术由一个主数据库(Primary)和一个或多个备用数据库(Standby)组成,能够在不同地理位置创建冗余,以防止数据丢失或系统中断。 在Oracle数据库体系结构中,实例(Instance)和数据库(Database)是核心组成...

    Oracle PLSQL编程最佳实践中文版

    - 不幸错误:运行时可能出现的问题,如网络中断。 - 意外错误:难以预测的异常情况,如硬件故障。 - **数据类型**: - **预定义数据类型**: - 包括常见的数字类型、字符类型、日期时间类型等。 - **用户自定义子...

    Oracle电子商务平台及工具.pptx

    在可伸缩性和可用性方面,Oracle平台能够适应从掌上电脑到大型主机的广泛用户规模,有效利用资源,并通过Oracle Parallel Server实现无中断的维护和容错设计,确保关键业务的连续运行。此外,Oracle Internet ...

    Oracle 11g最新性能

    在这种背景下,构建高度可用的IT基础设施成为企业在快速发展的“全天候”经济环境中取得成功的关键因素之一。 #### 下线时间的原因 在讨论Oracle Database 11g的高可用性之前,我们首先需要了解可能导致系统下线的...

    ORACLE认证考试ocjp题库(覆盖率99%)本人刚考完

    - 题库为最新版本,提供者刚完成考试并取得了满分成绩。 - **描述**: “最新ocjp题库,本人刚考完,满分通过,全部原题,不敢断言100%覆盖,99%应该差不多,最近几期的ORACLE-ocjp考试应该不会换题,换也不会有太...

    Oracle电子采购整体解决方案.pptx

    总的来说,Oracle电子采购整体解决方案是一个全面的采购管理系统,旨在通过自动化、集成化和智能化的方式,提升采购效率,降低成本,促进供应链协同,助力企业在竞争激烈的市场环境中取得优势。通过实施这个解决方案...

    Oracle 11g新特性概览和解析

    综上所述,Oracle 11g不仅在技术层面上带来了诸多创新,还在实际应用中取得了显著成效。无论是对于企业用户还是开发者来说,了解和掌握这些新特性都是非常有价值的。随着Oracle持续的技术革新和发展,我们有理由相信...

    Orcale数据库版本对比(9i、10g和11g)_20110411_lst.doc

    Oracle数据库是全球广泛使用的数据库管理系统之一,其不同的版本在功能和性能上有所差异。...从9i到11g,Oracle数据库逐步实现了自动化、智能化的管理,并在处理大数据、高并发和复杂复制场景方面取得了显著进步。

    OracleDataGuard容灾解决方案样本.doc

    灵活的数据保护功能,从而在可用性与性能要求之间取得平衡 — Oracle Data Guard 提供了最大保护、最高可用性和最高性能等模式,来帮助企业在系统性能要求和数据保护之间取得平衡。 自动间隔检测及其解决方案 — ...

    OceanBase数据库新产品技术概述.pdf

    这款数据库产品历经多个版本的发展,从最初的0.1版本支持淘宝收藏夹,到2.2版本在TPC-C基准测试中取得全球领先的成绩,展现出了强大的技术实力。 1. **产品发展历程及优势** - OceanBase始于解决大型企业对数据库...

    基于web的新闻发布管理系统的研究与设计-毕设论文.doc

    国外早在90年代就开始研发新闻发布管理系统,而我国在这方面起步相对较晚,但仍取得显著进步。以新浪、搜狐等为代表的门户网站,集成了多元化的新闻内容,包括文字、音频、视频等,提供全方位的信息服务。随着网络...

    机场信息化建设中云计算技术的应用.pdf

    但随着机场航空运输能力的提升和对信息化要求的提高,机场信息化建设取得了显著成就,同时也暴露了一些问题。例如,机场的多个信息系统如离港系统、安检信息系统等虽然相互联系但又各自独立,多数机场缺乏使用最佳...

    EMC VMAX 全闪存系列产品介绍.pdf

    总结而言,EMC VMAX全闪存系列产品代表了存储技术的前沿,不仅在性能、可扩展性和可用性方面取得了重大进步,而且还提供了关键任务数据保护的创新方法。它的高性能、高密度和高级数据服务的结合,使得它成为在苛刻的...

    华硕服务器优化Web 2.0网站系统解决方案

    2. 高稳定性运行:对于Web 2.0网站,服务器的稳定性至关重要,因为任何服务中断都可能导致用户流失。华硕RS160-E5/PA4支持专业级千兆网络,不仅可以实现大流量数据交换,还具备网络负载均衡和端口冗余功能,有效提升...

    FailureDetectors.pdf

    节点可能因为各种原因如硬件故障、软件错误、网络中断或安全攻击而发生故障。因此,在分布式系统的设计和开发中,故障检测是保证系统可靠性和可用性的核心问题之一。 故障检测器通常被看作是一种分布式预言机...

    glassfish插件-eclipse.rar

    GlassFish插件是Eclipse平台上的一个重要组件,专门用于与Oracle公司的GlassFish服务器进行集成。GlassFish是一款开源的Java EE应用服务器,它遵循Java Platform, Enterprise Edition (Java EE) 规范,提供了一整套...

    resin-3.1.11.tar.gz

    它可以与多种数据库系统(如MySQL、Oracle、PostgreSQL等)无缝对接,并且兼容各种Java持久化框架,如Hibernate和JPA。此外,Resin还支持EJB(Enterprise JavaBeans)和JMS(Java Message Service),为企业级应用...

Global site tag (gtag.js) - Google Analytics