利用rownum分組排序去重
需求:SQL> select fyear,fseason,fsale from t_test order by fyear,fseason;
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2012 2 200
2012 3 300
2012 4 400
2013 1 200
2013 2 300
2013 3 300
需要展現如下形式:
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2 200
3 300
4 400
2013 1 200
2 300
3 300
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2012 2 200
2012 3 300
2012 4 400
2013 1 200
2013 2 300
2013 3 300
需要展現如下形式:
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2 200
3 300
4 400
2013 1 200
2 300
3 300
如果年有多行一樣,只展現一年的,別的都是空。
看了fuyuncat大師的 “Oracle中ROWNUM的使用技巧” 部落格,我突然明白我的如何解決了。
技巧就是利用rownum來做分組排序去重。
不多說,上程式碼。
SQL如下:
SQL> select decode(rownum - rn, 0, t.fyear, null) as fyear, fseason, fsale
2 from (select a.*, rn
3 from t_test a,
4 (select fyear, min(rownum) as rn
5 from (select fyear, fseason, fsale
6 from t_test
7 order by fyear, fseason)
8 group by fyear) b
9 where a.fyear = b.fyear
10 order by a.fyear, a.fseason) t;
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2 200
3 300
4 400
2013 1 200
2 300
3 300
很精妙的rownum用法,解決困擾我很久的問題。
看了fuyuncat大師的 “Oracle中ROWNUM的使用技巧” 部落格,我突然明白我的如何解決了。
技巧就是利用rownum來做分組排序去重。
不多說,上程式碼。
SQL如下:
SQL> select decode(rownum - rn, 0, t.fyear, null) as fyear, fseason, fsale
2 from (select a.*, rn
3 from t_test a,
4 (select fyear, min(rownum) as rn
5 from (select fyear, fseason, fsale
6 from t_test
7 order by fyear, fseason)
8 group by fyear) b
9 where a.fyear = b.fyear
10 order by a.fyear, a.fseason) t;
FYEAR FSEASON FSALE
---------- ---------- ----------
2012 1 200
2 200
3 300
4 400
2013 1 200
2 300
3 300
很精妙的rownum用法,解決困擾我很久的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25027760/viewspace-1062102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java利用Comparator實現分組排序Java排序
- oracle下資料的排序分組row_number() over()--分析函式,可用於去重Oracle排序函式
- 【實驗】【SQL】排序與rownum的關係暨利用rownum處理一實際需求SQL排序
- 陣列的去重和排序陣列排序
- mysql資料去重和排序MySql排序
- MONGODB03 - 分組計數/分組去重計數(基於 spring-data-mongodb)MongoDBSpring
- order by改分組排序排序
- SQL 分組排序group bySQL排序
- java TreeSet去重與排序入門Java排序
- 陣列物件的去重然後排序陣列物件排序
- MySQL實現分組排序MySql排序
- MapReduce框架排序和分組框架排序
- Java List集合去重、過濾、分組、獲取資料、求最值、合併、排序、跳資料和遍歷Java排序
- MS SQL Server常見問題 -- 分組 去重複 查詢 統計SQLServer
- 【力扣】組合總和3(組合的去重)力扣
- 列組合資料去重複值
- Oracle Rownum分頁改寫Oracle
- Mysql 分組排序的sql寫法MySql排序
- Python元組、列表、集合及列表去重操作Python
- 去“5”排序排序
- 有點難以描述的問題(轉列+排序+去重)排序
- JAVA將快速將列表分組並排序鍵Java排序
- 資料庫之DQL排序&分組&函式資料庫排序函式
- select查詢之二:分組與排序排序
- SQL 分組排序取最新一條記錄SQL排序
- 09_ClickHouse,ReplacingMergeTree,案例,根據排序鍵去重,使用版本引數的去重(學習筆記)排序筆記
- 切片去重(string,int型別去重)型別
- sql 去重SQL
- 列表去重
- javascript: 帶分組資料的Table表頭排序JavaScript排序
- Rownum分頁故障解決一例
- oracle 使用rownum進行分頁的陷阱Oracle
- JS陣列去重 – JSON陣列去重陣列JSON
- 大檔案的排序和去重 超級簡單的實現排序
- 使用rownum分頁排序奇怪現象一則:前後幾次查詢資料不一樣排序
- 希爾排序——重溫排序(二)排序
- 輕鬆搞定分組報表中的各種排序排序
- LINQ簡明教程:資料排序、分組、過濾排序