2016-10-09 47 views
0

我在Oracle Apex頁面(例如「F01C,F01D,G01A」)中有一個逗號分隔值的文本字段。這些值僅存儲在我的表格的一列中(表格:HC_DEFHANDBUCH_B5列DRG)。列中的Oracle Apex多個值

------ 
PK_ID OPS  MDC   DRG     OPS_FILL MDC_FILL YEAR 
214098 1-100 2   C01A, C01B, C14Z 1-100  2   2017 
214099 -  15   P67D    1-100  15   2017 
214100 1-204.2 15   P67D    1-204.2  15   2017 
214101 1-204.3 15   P67D    1-204.3  15   2017 
------- 

我試圖在交互式報告中運行一個查詢選擇從哪個是每一DRG一個行的表HC_GDRG_FPK PK_ID「214098」的所有病種付費:

Select * FROM HC_GDRG_FPK a 
WHERE a.DRG IN (Select '(''' || REPLACE(b.DRG,', ',''', ''') || ''')' FROM HC_DEFHANDBUCH_B5 b WHERE b.PK_ID='214098') 
AND a.Jahr='2017' 

沒有人有一個想法如何得到這個工作?我得到它在一個單一的價值。

在此先感謝。

+1

在列中存儲逗號分隔值違反了最基本的規範化規則。這將使它更難以合作。這樣做的正確方法是創建一個子表,其中三個值有三行。你確定你不想修復你的數據模型嗎? –

+1

我三次閱讀這個問題,但我仍然不明白你想要做什麼。你能用簡單的英語來解釋任務嗎? (順便說一下,如果列是Year,Jahr將無法工作!) – mathguy

+0

@Justin Cave:你說得對。孩子桌子可以幫助我嘗試這個。數據模型的問題是這些數據來自公共資源。將跟進。 – fscherbaum

回答

0

我終於可以用正則表達式解決它。 @Justin Cave:謝謝你的提示。

select * from HC_GDRG_FPK where DRG in (
select regexp_substr(:P39_CALL_DRGS,'[^,]+', 1, level) from HC_DEFHANDBUCH_B5 
connect by regexp_substr(:P39_CALL_DRGS, '[^,]+', 1, level) is not null) 
AND Jahr ='2017'