2013-07-05 2 views
-1

다른 노동 조합에 가입하려는 2 개의 일련의 노동 조합이 있습니다. 처음에는 3 개가 있는데 Selects이고 두 번째에는 2 개가 있습니다 Selects입니다.여러 개의 공용체가 결합되어 있고 별칭으로 발행되는 경우

Select id, min(value) 
from table1 t1 
join (Select id, value 
     Union 
     Select id, value 
     Union 
     Select id, value) as foo 
    on foo.id=t1.id 
    Group by id 

Select id, max(value) 
from table1 t1 
join (Select id, value 
     Union 
     Select id, value) as bar 
    on bar.id=t1.id 
    Group by id 

나는이 두 가지의 결합을 시도했지만 꽤 복잡했다. 내 가장 큰 문제는 내 별칭입니다. 내 두 번째 사례는 내 가치 항목 열과 연결된 사례로 가치 평가를 원합니다.

Select (alias).id, 
     Case 
      When foo.value= 0 or bar.value=1 THEN 1 
      Else 0 
     End as value 
from table1 t1 
Join (Select id, min(value) 
     from table1 t1 
     join (Select id, value 
      Union 
      Select id, value 
      Union 
      Select id, value) as foo 
      on foo.id=t1.id 
      Group by id 
     UNION 
     Select id, max(value) 
     from table1 t1 
     join (Select id, value 
      Union 
      Select id, value) as bar 
     on bar.id=t1.id 
     Group by id) as (alias) 
    on ??.id=??.id 

나는 내 경우에는 내가 작성해야한다고 생각하는 방법을 썼다지만, 같은 이름을 가진 두 개 이상의 열이있을 때 일반적으로, SQL은 같은 모호한 상태. 내가 UNION 또는 INTERSECT을 사용해야하는지 아직도 확신 할 수는 없지만 둘 중 하나가 같은 방식으로 수행된다고 가정합니다. 어떻게해야합니까? 나는이 권리를 읽고 있어요

+0

같은 것이 최종 쿼리와 논리적 인 문제가 있습니다 원하는 : 귀하의 경우에는 조건'때 foo.value = 0 또는 bar.value = 1' - 외부 질의에는 어떤 값이 어떤 서브 쿼리에서 왔는지 알 수있는 방법이 없습니다. 뿐만 아니라'UNION'과'INTERSECT'는 상당히 다른 것들을합니다. 당신이하고 싶은 것은 분명하지 않습니다. * 어떻게 * 당신이 그것을하려고하는지, 아니면 현재 당신이 가지고있는 정확한 * 문제를 설명하기 위해 * 당신이 무엇을하려고하는지 설명하기 위해 당신의 질문을 다시 말해 줄 수 있습니까? –

+1

테이블 레이아웃을 제공 할 수 있습니까? 그리고 당신은 무엇을하려고합니까? – Gimmy

+0

원하는 것을 설명해주십시오. 당신의'union' 쿼리는'from' 절이 없습니다. 당신은'group by '없이 집계 함수를 사용하고 있습니다. 그리고 당신이 무엇을하려고하는지 명확하지 않습니다. –

답변

0

, 당신은 아마이

SELECT ... 
FROM (... union #1) AS u1 
JOIN (... union #2) AS u2 ON u1.id = u2.id 
관련 문제