2016-10-09 5 views
0

Oracle Apex 페이지에 쉼표로 구분 된 값 (예 : "F01C, F01D, G01A")이있는 텍스트 필드가 있습니다. 값은 내 테이블의 한 열에 만 저장됩니다 (테이블 : HC_DEFHANDBUCH_B5 열 DRG).컬럼의 Oracle Apex 다중 값

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' 

누구 아이디어가 있습니까 :

------ 
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 
------- 

나는 PK_ID '214098'DRG 당 하나 개의 행을 데 테이블 HC_GDRG_FPK에서 모든 DRGs를 선택하는 대화 형 보고서에서 쿼리를 실행하려고 이 일을하는 방법? 나는 그것이 하나의 가치에 맞도록한다.

미리 감사드립니다.

+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'