2013/07/28

20130728-程式-Informix將多個Row資料合併為一個Row

今天假日到公司加班,
因客戶在準備「匯入資料」想直接照原本的Query出來的結果,供我做匯入。

而因這樣的匯入資料,對我來說,還要判斷Insert Or Update。
所以,想到  SQL 有「多筆Row 合併為 一筆Row」 這做法 (忘了實際SQL寫法是什麼@@~)

因客戶這是 Informix ,所以查這一類的資料
Google:http://goo.gl/eFNqlC
使用資料:http://goo.gl/uVJkWP


執行結果:(記下這篇就是怕以後忘了)




--原關聯的資料
select sc_role.irole, sc_account_role_relation.iaccount
FROM sc_role INNER JOIN sc_account_role_relation ON sc_role.irole = sc_account_role_relation.irole
WHERE sc_role.irole='R01-301'

--組出來的結果
select sc_role.irole, 
replace(replace(replace(replace(replace( 
multiset (select sc_account_role_relation.iaccount from sc_account_role_relation where sc_account_role_relation.irole = 
sc_role.irole)::lvarchar 
, 'MULTISET{',''), 'ROW(''',''),''')',''),'}',''),',','//') AS Account 
from sc_role  WHERE sc_role.irole='R01-301'



=============================
2014/06/20 -
真的是失憶了,完全忘了自已有寫過這類這麼神奇的Code ,
要回想還真是看不懂程式呀!

關鍵字:multiset
--sql概念
multiset (一段multi row 的資料)::lvarchar

最後會組出這類文字:
MULTISET{ROW('891046'),ROW('930660'),ROW('910033'),ROW('702269')}
再一個一個把它 Replace 掉








0 意見 :

張貼留言