2012-08-28 2 views
0

두 레코드 병합I 2 개 레코드 다음 한 오라클

Id isVal isVal1 
1 Y  N 
2 Y  N 

레코드 2

Id isVal isVal1 
2 N  Y 
3 N  Y 
필요

실제 레코드이다

Id isVal isVal1 
1 Y  N 
2 Y  Y 
3 N  Y 

가입을 사용해야합니까? 이 문제를 어떻게 풀 수 있습니까?

+0

'Id = 2'에서'isVal'에 대해 원하는 값을 찾으십니까? 레코드 세트 1에 지정된대로 'Y'로 설정하거나 레코드 세트 2에서 'N'으로 설정 하시겠습니까? Recordset 1 값은 항상 Recordset 2 값보다 우선 순위가 있습니까? 또는'Id'가 두 테이블 모두에 존재한다면'Y'는'N'보다 항상 우선 순위를 갖습니다. – Glenn

답변

1

아니요, 서로의 위에 레코드를 배치하여 union을 사용해야합니다. 당신이하는 당신이 all을 제거하는 것, 중복을 제거 할 필요가 없습니다으로

select id, max(isval) as isval, max(isval1) as isval1 
    from (select id, isval, isval1 
      from recordset1 
      union all 
     select id, isval, isval1 
      from recordset1 
       ) 
group by id 

나는 union all를 사용합니다.

'Y''N'보다 크기 때문에 max이 작동합니다.

'Y'이 첫 번째 레코드 세트의 값보다 두 번째 레코드 세트의 값보다 덜 중요하다는 가정하에 'N'이라고 가정합니다.

관련 문제