여러 테이블이 있고 ID/Member/Type/UseDefault 열이 하나 있습니다. 다른 테이블에는 ID를 기반으로 한 사람에 대한 설명 정보가있는 열이 있습니다.case 문을 사용하여 다른 테이블의 데이터를 기반으로 데이터 표시
유형은 대부분 기본입니다. 어떤 경우에는 ID에 해당하는 정보가 완벽합니다. UseDefault가 false 인 경우 (이는 유형 IS가 기본이 아니며 기본값을 사용하지 않으려는 경우에만 발생 함) 제공된 ID도 완벽하게 적합합니다. 그러나 type이 기본값이 아니고 default를 Yes로 입력하면 같은 구성원의 기본 ID와 관련된 정보를 표시해야합니다. 예를 들어
:
ID Member Type UseDefault
1 joe default Y
2 joe additional Y
3 joe third N
당신이 행 1 ... 볼 수 있듯이 예, 사용의 기본은 예이지만, 형식은 이미 기본값입니다. 3 행에서
는, 사용의 기본값은 NO입니다, 그래서 당신은 ID를 계속 3.
그러나 연속 2. 기본은 '예, 그리고 유형이 기본되지 않은, 그래서 우리가 행을 찾을 필요 Joe의 기본 유형. 여기에 다른 테이블과 내 쿼리의 예상 출력이 있습니다.
정보
ID Car Color Food
1 Benz Red Pizza
2 Ferrari Green Cheese
3 Minivan Orange Hamburger
expected output:
Output
ID Car Color Food
1 Benz Red Pizza
1 Benz Red Pizza
3 Minivan Orange Hamburger
은 기본적으로 내가
declare
id varchar2(2000)
Select I.Car, I.Color, I.FavoriteFood
from Info I
full outer join Example e on e.id = i.id
where case id:= when (e.useDefault = 'N' AND e.Type <> 'Default') then (select id from example where e.name = name and e.type = default) else e.type end
and i.id = @id;
는 회원 ID로 '조'가 회원에 대한 고유 식별자되어 있나요? 그렇지 않으면 어떤 'joe'행이 서로 관련이 있는지, 다른 Joe 행의 행은 어떻게 알 수 있습니까? – mathguy
거기에 다른 이름이있을 것입니다, 내가 그 부분을 포함하는 이유는 기본 및 다른 값뿐만 아니라 기본값으로 제임스 steve있을 것입니다 –
당신은 내 질문을 이해하지 못했습니다. 조 브라운과 조 힐이 있을까요? 어떤 조 (어느 배)가 어느 조와 어울리는 지 어떻게 알 수 있니? Joe와 다른 Joe를 구별하기 위해 member_id에 대한 다른 열도 있습니까? – mathguy