2016-10-09 13 views
0

私は、Oracle Apexページ(例: "F01C、F01D、G01A")にカンマ区切りの値を持つテキストフィールドを持っています。値は私のテーブルの1つの列にのみ格納されます(テーブル: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ごとに1つの行を持っている表のHC_GDRG_FPKからPK_ID「214098」の全てのDRGを選択するために、対話型のレポートでクエリを実行しようとした:

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

カラムにコンマ区切り値を格納することは、最も基本的な正規化規則に違反します。それは、それを扱うことをはるかに困難にするでしょう。これを行う正しい方法は、3つの値に対して3つの行がある子テーブルを作成することです。データモデルを修正したくないのですか? –

+1

私は3回質問を読みましたが、私はまだあなたがしようとしていることを理解していません。あなたは普通の英語で課題を説明できますか? (ところで、列がYearの場合、Jahrは動作しません!) – mathguy

+0

@Justin Cave:そうです。私はこれを試すのに役立つ子テーブルです。データモデルの問題は、このデータが公開されたものであることです。フォローアップします。 – fscherbaum

答えて

0

私は最終的に正規表現でそれを解決することができました。 @ジャスティンケイブ:ヒントをありがとう。

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' 
関連する問題