一,首先想到:
1,關鍵字distinct
2,group by
3,max,min這樣的函式被稱為聚集函式,和group搭配起來用
但均無法實現,執行結果如下
舉例:表名:offsiteoutreachteam_list
字段:corpaddlevel(獲取該字段不重複資料),channelcode, corpname, belongorgname
執行結果:
1,distinct
--乙個字段有效,多個字段無效
select distinct corpaddlevel from offsiteoutreachteam_list;
select distinct corpaddlevel ,channelcode, corpname, belongorgname from offsiteoutreachteam_list;
注意:當除了過濾欄位外的其他所有字段內容相同時,才可以起到過濾效果。
2,group by
--只能查詢乙個字段
select corpaddlevel from offsiteoutreachteam_list group by corpaddlevel; --報錯 not a group by expression
select corpaddlevel,channelcode, corpname, belongorgname from offsiteoutreachteam_list group by corpaddlevel;
3,max,min這樣的函式被稱為聚集函式,和group搭配起來用
--只能過濾兩個字段
select min(channelcode), corpaddlevel from offsiteoutreachteam_list group by corpaddlevel --報錯 not a group by expression
select min(channelcode), corpaddlevel,corpname, belongorgname from offsiteoutreachteam_list group by corpaddlevel
二,正確方式
1,關鍵字 row_number() over(partition by 使用子查詢對重複資料按照123...排序,再條件需要為1的。
select corpaddlevel ,channelcode, corpname, belongorgname
from(select ol.corpaddlevel,ol.channelcode, ol.corpname, ol.belongorgname, row_number() over(partition by ol.corpaddlevel order by ol.corpaddlevel) ds
from offsiteoutreachteam_list ol
where ol.corpaddlevel is not null)
where ds = 1
2,使用min group by進行子查詢,獲取唯一字段,再查詢所有字段。
select corpaddlevel ,channelcode, corpname, belongorgname from offsiteoutreachteam_list where channelcode in
(select min(channelcode) from offsiteoutreachteam_list group by corpaddlevel) order by corpaddlevel;
oracle過濾某個字段重覆記錄,只獲取一條記錄
一,首先想到 1,關鍵字distinct 2,group by 3,max,min這樣的函式被稱為聚集函式,和group搭配起來用 但均無法實現,執行結果如下 舉例 表名 offsiteoutreachteam list 字段 corpaddlevel 獲取該字段不重複資料 channelcode,...
oracle拆分某個字段
表 uf wzlb 物資類別 表 uf wzzl 物資種類 表 uf wzlb wzzl 物資類別和物資種類關聯表,物資類別與物資種類為一對多關係 如,物資類別編碼為 wzlb 201805100004 該物資類別繫結了多個物資種類,繫結的物資種類編碼為 wzzl 201805100044,wzzl...
Oracle 某個字段排序報錯
出現這個問題的原因 是因為在檢視中進行了計算 加減乘除等 而這幾個欄位中存在錯誤的資料 比如用 ss 1 資料庫進行型別轉換的時候就會報錯了 我們需要將有資料錯誤的字段找出來人後刪除或者修改 就可以解決 比如在檢視中計算了 select a,b,c d as d from test 但是d裡面有一條...