iT邦幫忙

0

ORACLE資料庫有沒有類似PARSENAME的方法

cliff_chen 3 月前5532 瀏覽

我組出了一組查詢的SQL
顯示的資料如下

採購單號,廠商代號,商品代號,採購單預計交貨日期,數量,剩餘數量,收貨單號,收貨單日期,收貨人,收貨量,退貨量

假設同一張採購單(進貨2種商品)+商品代號遇到情況有退貨(只退一項),之後廠商又再進貨,同一筆採購單+商品代號就會顯示2筆

採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,收貨單號B001,20170406,收貨人B,100,50
採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,收貨單號B003,20170407,收貨人A,30,0
採購單A001,廠商001,商品代號002,20170406,總共數量100,剩餘50,收貨單號B001,20170406,收貨人B,50,0

因為剩餘數量是抓採購單裡的資料,所以第2次收貨後,第1筆的剩餘數量也會被影響到

有沒有辦法只顯示最新一筆收貨單資料
變成這樣

採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,收貨單號B003,20170407,收貨人A,30,0
採購單A001,廠商001,商品代號002,20170406,總共數量100,剩餘50,收貨單號B001,20170406,收貨人B,50,0

使用GROUP採購單號,廠商代號,商品代號,採購單預計交貨日期,數量,剩餘數量系統不讓我過
拜託各位了,謝謝

我現在再考慮另一種方式
將收貨單的部分用||','||做欄位合併
變成如下

採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,合併成一個欄位(收貨單號B001,20170406,收貨人B,100,50)
採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,合併成一個欄位(收貨單號B003,20170407,收貨人A,30,0)
採購單A001,廠商001,商品代號002,20170406,總共數量100,剩餘50,合併成一個欄位(收貨單號B001,20170406,收貨人B,50,0)

在用GROUP+MAX變成

採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,合併成一個欄位(收貨單號B003,20170407,收貨人A,30,0)
採購單A001,廠商001,商品代號002,20170406,總共數量100,剩餘50,合併成一個欄位(收貨單號B001,20170406,收貨人B,50,0)

到這邊成功

接下來是打算再將合併的欄位依照欄位資料裡的,當作分割,切割成多欄位,這個地方我就卡住了

採購單A001,廠商001,商品代號001,20170406,總共數量100,剩餘20,收貨單號B003,20170407,收貨人A,30,0
採購單A001,廠商001,商品代號002,20170406,總共數量100,剩餘50,收貨單號B001,20170406,收貨人B,50,0

請問這該怎麼處理
google只有找到SQL Server 2008有PARSENAME能用
但是ORACLE沒有這個功能
請問ORACLE有沒有類似這個功能的語法

尚未有邦友回答

立即登入回答