2013-10-29 1 views
-1

여기에서 A3에서 제공해야하는 P1, P2, P3에 대한 값을 얻으려고합니다. 3 개가 아닌 2 개 테이블에서는 잘 작동합니다. .다른 별칭을 가진 동일한 데이터베이스 테이블을 사용하여 데이터를 검색합니다.

SELECT x.A1,x.A3,x.A4,A5,A6, x.A2 as P1,y.A2 as P2,z.A2 as P3 
FROM Contact x,Contact y,Contact z 
WHERE (x.id = y.id) AND (y.id = z.id) AND 
(x.A3 ='pre-sale') AND (y.A3= pos-sale') AND(z.A3='current-sale') 
ORDER by x.A4 DESC 

접촉 표 번째 테이블을 첨가 두번 동일한 테이블 잘 작동하여, P1, P2 일부 예상 결과와 같이 P3 P1 용

A1 A2  A3   A4  A5 A6 P1 P2 P3 
---------------------------------------------------- 
1 22  pre-sale  9  kk 8 22 31 2 
2 31  pos-sale  4  yy 6 44 61 11 
3 2  current-sale 1  hh 2 null null null 
4 44  pre-sale  2  kk 8  
5 61  pos-sale  1  yy 6  
6 11  current-sale 1  hh 2  

, P2를 볼 것이다 예 들어 P1, P2에 대한 값 은 P3에 대해 동일하고 모두 null null

+0

오래된 결합 구문을 사용하지 마십시오 –

답변

0

나는 당신이하려고하는 것이 조건부 집합을 사용하는 것이 가장 좋을 것이라고 생각한다. 모든 열에 별명이 지정되어 있지 않으므로 실제로 수행하려고하는 내용을 말하기는 약간 어렵습니다. 여기에 예제가 있습니다

SELECT c.id, 
     max(case when c.A3 = 'pre-sale' then A4 end) as PreSale_A4, 
     max(case when c.A3 = 'pos-sale' then A2 end) as PosSale_A2, 
     max(case when c.A3 = 'current-sale' then A4 end) as CurrentSale_A2 
FROM Contact c 
group by c.id 
order by PreSale_A4 desc; 

원래 검색어는 근본적인 문제가 있습니다. 예를 들어, 내부 조인 인 where 절을 통해 암시 적 조인을 사용하고 있습니다. 문제의 해결책은 대신 외부 조인을 사용하는 것일 수 있습니다. 그러나 조건부 집계는 문제를 해결할 수 있습니다.

+0

시도했지만 작동하지 않습니다 ... –

관련 문제