0
저는 장교의 모든 레벨에서 타이틀을 생성하려고 시도하지만보다 자세한 제목 만 얻습니다. 이 진술서를 어떻게 수정할 수 있습니까?SQL 쿼리에서 길을 잃었습니다
현재 저는 99ABC와 같은 자세한 제목을 얻었지만 모든 조합을 얻고 싶습니다.
99---
99--C
99-B-
99A--
99-BC
99A-C
99AB-
99ABC
select distinct TITLE
from (SELECT
(case when OFF3.OFFICER_ID IS NOT NULL then DEP.INDICATOR || TEA.INDICATOR || coalesce(OFF1.INDICATOR, '-') ||
coalesce(OFF2.INDICATOR, '-') || coalesce(OFF3.INDICATOR, '-')
else case when OFF2.OFFICER_ID IS NOT NULL then DEP.INDICATOR || TEA.INDICATOR || coalesce(OFF1.INDICATOR, '-') || coalesce(OFF2.INDICATOR, '-') || '-'
else case when OFF1.OFFICER_ID IS NOT NULL then DEP.INDICATOR || TEA.INDICATOR || coalesce(OFF1.INDICATOR, '-') || '--'
else DEP.INDICATOR || TEA.INDICATOR || '---' end end end) as TITLE
FROM DEPARTMENT DEP,
TEAM TEA
LEFT OUTER JOIN OFFICER OFF1 ON OFF1.OFFICER1_TEAM_ID = TEA.TEAM_ID
LEFT OUTER JOIN OFFICER OFF2 ON OFF2.OFFICER2_TEAM_ID = TEA.TEAM_ID
LEFT OUTER JOIN OFFICER OFF3 ON OFF3.OFFICER3_TEAM_ID = TEA.TEAM_ID
WHERE TEA.TEAM_DEPA_ID = DEP.DEPARTMENT_ID
AND TEA.TEAM_MANAGER_ID IS NOT NULL
AND coalesce(TEA.TEAM_MANAGER_ID, OFF1.TEAM_OFFICER_ID, OFF2.TEAM_OFFICER_ID, OFF3.TEAM_OFFICER_ID) is not null) myselect
P. ||
은 concetenate 조작에 사용됩니다.
@ 마크 - 난간을. 답변 해주셔서 감사합니다. 'with '연산자없이 할 수 있습니까? – Kayser
@ 카이저 : 예.하지만 대답은 이해하기가 쉽지 않습니다. 'WITH'는 DB2 SQL의 표준 부분이어야합니다 - 왜 그것을 사용하고 싶지 않으십니까? –
@ mark-banister 나는이 쿼리를'select * from (myselect) where ... '와 같은 또 다른 쿼리에 넣을 것이다. from은 허용되지 않는다 .. – Kayser