台灣最大程式設計社群網站
線上人數
1052
 
會員總數:246093
討論主題:189666
歡迎您免費加入會員
討論區列表 >> Oracle >> 用distinct or group by 撈出資料
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
用distinct or group by 撈出資料
價值 : 50 QP  點閱數:1227 回應數:4
樓主

oldgump
門外漢
0 1
40 1
發送站內信

小弟有一資料庫類似如下
AA BB CC DD EE FF GG HH
DATA1 01 02 03 04 05 06
DATA2 01 02 03 04 07 08
DATA3 09 10 11 12 13 14
DATA4 09 10 11 12 15 16

(EEFFGGHH四個欄位在AABBCCDD相同的情況下只會有一筆有值
EX:DATA1與DATA2視為一組資料,DATA1的EE有值05,那DATA2的EE就不會有值)
上面的資料該怎麼下SQL(distinct or group by)才能撈成下面這樣

AA BB CC DD EE FF GG HH
DATA5 01 02 03 04 05 07 06 08
DATA6 09 10 11 12 15 13 16 14


將AABBCCDD四欄位一樣的資料擇一顯示然後將EEFFGGHH欄位併起來顯示

不知道大家看不看得懂 小弟想了很久XD
先感謝回應




本篇文章發表於2015-02-24 19:58
1樓
作者回應

oldgump
檢舉此回應
排版跑掉了 附上抓圖才看得懂XD
本篇文章回覆於2015-02-24 20:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

育成
捐贈 VP 給 育成 檢舉此回應

Select DISTINCT
A.AA, A.BB, A.CC, A.DD,
NVL(EE, (Select EE FROM 表 WHERE AA = A.AA AND BB = A.BB AND CC = A.CC AND DD = A.DD AND EE IS NOT NULL )) AS EE,
NVL(FF, (Select FF FROM 表 WHERE AA = A.AA AND BB = A.BB AND CC = A.CC AND DD = A.DD AND FF IS NOT NULL )) AS FF,
NVL(GG, (Select GG FROM 表 WHERE AA = A.AA AND BB = A.BB AND CC = A.CC AND DD = A.DD AND GG IS NOT NULL )) AS GG,
NVL(GG, (Select HH FROM 表 WHERE AA = A.AA AND BB = A.BB AND CC = A.CC AND DD = A.DD AND HH IS NOT NULL )) AS HH
FORM 表

查詢說明 會查出[表]所有資料 遇到EE為NULL就查出EE的以此類推查出EE到HH

效能說明 因為[表]沒有下條件所以會查出所有筆數,子查詢每一筆需查子查詢2次最多4次





本篇文章回覆於2015-03-02 10:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

育成
捐贈 VP 給 育成 檢舉此回應

更正 表 要 AS 為A
本篇文章回覆於2015-03-02 10:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

Hsu,Harry
檢舉此回應
本篇文章回覆於2015-03-02 14:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.