oracle—SQL技巧之(一)連續(xù)記錄查詢sql案例測試
更新時間:2013年01月15日 15:09:56 作者:
有這樣一個需求:需要查詢出某個客戶某一年那些天是有連續(xù)辦理過業(yè)務(wù),本文給予sql實(shí)現(xiàn)語句并測試,感興趣的朋友可以了解下
需求說明:
需要查詢出某個客戶某一年那些天是有連續(xù)辦理過業(yè)務(wù)
實(shí)現(xiàn)SQL如下:
創(chuàng)建表:
create table test_num
(tyear number,
tdate date);
測試數(shù)據(jù):
insert into test_num
select 2014,trunc(sysdate)-1 from dual union all
select 2014,trunc(sysdate)-002 from dual union all
select 2014,trunc(sysdate)-003 from dual union all
select 2014,trunc(sysdate)-004 from dual union all
select 2014,trunc(sysdate)-005 from dual union all
select 2014,trunc(sysdate)-007 from dual union all
select 2014,trunc(sysdate)-008 from dual union all
select 2014,trunc(sysdate)-009 from dual union all
select 2013,trunc(sysdate)-120 from dual union all
select 2013,trunc(sysdate)-121 from dual union all
select 2013,trunc(sysdate)-122 from dual union all
select 2013,trunc(sysdate)-124 from dual union all
select 2013,trunc(sysdate)-125 from dual union all
select 2013,trunc(sysdate)-127 from dual union all
select 2015,trunc(sysdate)-099 from dual union all
select 2015,trunc(sysdate)-100 from dual union all
select 2015,trunc(sysdate)-101 from dual union all
select 2015,trunc(sysdate)-102 from dual union all
select 2015,trunc(sysdate)-104 from dual union all
select 2015,trunc(sysdate)-105 from dual;
寫SQL:
SELECT TYEAR, MIN(TDATE) AS STARTDATE, MAX(TDATE), COUNT(TYEAR) AS ENDNUM
FROM (SELECT A.*, A.TDATE - ROWNUM AS GNUM
FROM (SELECT * FROM TEST_NUM ORDER BY TYEAR, TDATE) A)
GROUP BY TYEAR, GNUM
ORDER BY TYEAR, MIN(TDATE)
需要查詢出某個客戶某一年那些天是有連續(xù)辦理過業(yè)務(wù)
實(shí)現(xiàn)SQL如下:
創(chuàng)建表:
復(fù)制代碼 代碼如下:
create table test_num
(tyear number,
tdate date);
測試數(shù)據(jù):
insert into test_num
select 2014,trunc(sysdate)-1 from dual union all
select 2014,trunc(sysdate)-002 from dual union all
select 2014,trunc(sysdate)-003 from dual union all
select 2014,trunc(sysdate)-004 from dual union all
select 2014,trunc(sysdate)-005 from dual union all
select 2014,trunc(sysdate)-007 from dual union all
select 2014,trunc(sysdate)-008 from dual union all
select 2014,trunc(sysdate)-009 from dual union all
select 2013,trunc(sysdate)-120 from dual union all
select 2013,trunc(sysdate)-121 from dual union all
select 2013,trunc(sysdate)-122 from dual union all
select 2013,trunc(sysdate)-124 from dual union all
select 2013,trunc(sysdate)-125 from dual union all
select 2013,trunc(sysdate)-127 from dual union all
select 2015,trunc(sysdate)-099 from dual union all
select 2015,trunc(sysdate)-100 from dual union all
select 2015,trunc(sysdate)-101 from dual union all
select 2015,trunc(sysdate)-102 from dual union all
select 2015,trunc(sysdate)-104 from dual union all
select 2015,trunc(sysdate)-105 from dual;
寫SQL:
復(fù)制代碼 代碼如下:
SELECT TYEAR, MIN(TDATE) AS STARTDATE, MAX(TDATE), COUNT(TYEAR) AS ENDNUM
FROM (SELECT A.*, A.TDATE - ROWNUM AS GNUM
FROM (SELECT * FROM TEST_NUM ORDER BY TYEAR, TDATE) A)
GROUP BY TYEAR, GNUM
ORDER BY TYEAR, MIN(TDATE)
您可能感興趣的文章:
相關(guān)文章
Oracle數(shù)據(jù)庫中SQL語句的優(yōu)化技巧
這篇文章主要介紹了Oracle數(shù)據(jù)庫中SQL語句的優(yōu)化技巧的相關(guān)資料,需要的朋友可以參考下2016-07-07日常收集整理oracle trunc 函數(shù)處理日期格式(很實(shí)用)
關(guān)于oracle trunc函數(shù)小編日常收集整理了些,下面把oracle trunc 函數(shù)處理日期格式的相關(guān)介紹分享給大家,感興趣的朋友參考下2015-10-10Oracle數(shù)據(jù)庫 DGbroker三種保護(hù)模式的切換
這篇文章主要介紹了Oracle數(shù)據(jù)庫 DGbroker三種保護(hù)模式的切換 的相關(guān)資料,需要的朋友可以參考下2015-12-12Oracle如何實(shí)現(xiàn)把B表某一字段更新到A表
這篇文章主要給大家介紹了關(guān)于Oracle如何實(shí)現(xiàn)把B表某一字段更新到A表的相關(guān)資料,在Oracle中使用一個表的字段來更新另一個表的字段,可以采用UPDATE SELECT語句,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-07-07如何解決Oracle數(shù)據(jù)表入庫中文亂碼問題
Oracle數(shù)據(jù)庫在處理中文數(shù)據(jù)時,經(jīng)常會遇到亂碼問題,導(dǎo)致數(shù)據(jù)無法正常顯示和處理,這是因為Oracle數(shù)據(jù)庫默認(rèn)的字符集為US7ASCII,無法識別中文字符,通過修改數(shù)據(jù)庫,客戶端和應(yīng)用程序字符集,將數(shù)據(jù)轉(zhuǎn)換為正確的字符集,可以避免亂碼問題2024-02-02Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解
這篇文章主要介紹了Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解,也稱半連接和反連接,其實(shí)就是in、exists,需要的朋友可以參考下2014-07-07