2012-09-11 4 views
2

나는 다음과 같은 테이블을 만들 싶습니다 (표 1) : 다음 표에서중복 제거 및 SQL 쿼리에서 하나 개의 테이블에서 데이터를 결합

CHANNEL START STOP SIGNAL NOISE 
------------------------------------------- 
chan1  0  1  A   B 
chan2  10  20  C   D 
... 

(표 2) :

CHANNEL START STOP TYPE  VALUE 
------------------------------------------- 
chan1  0  1  signal A 
chan1  0  1  noise  B 
chan2  10  20  signal C 
chan2  10  20  noise  D 
... 

테이블 2에서 관련 정보를 가져 와서 테이블 1을 만드는 select 쿼리를 작성하려고합니다. 나는 이것을보기로 바꿀 것이다.

나는이 시점에서 본질적으로 잃어버린다. 나는 다음을 시도했다 :

select distinct 
    table2.CHANNEL as CHANNEL_ID 
    , table2.START as START_FREQ 
    , table2.STOP_FREQ as STOP_FREQ 
    , SIGNAL = CASE 
     WHEN table2.TYPE = 'signal' THEN table2.VALUE 
     END 
    , NOISE_OFFSET = CASE 
     WHEN table2.TYPE = 'noise' THEN table2.VALUE 
     END 

from 
    table2 

이것은 흥미로운 결과를 가져다 주지만 분명히 내가 원하는 것은 아니다. 나는 이것이 틀린 쿼리라는 것을 알고 있으며 아마도 조인을 사용하여이 작업을 수행해야하지만, 그 라우트로 갔을 때 쿼리는 실행되지 않을 것입니다. 나는 두뇌 방귀를 여기에 데 도움이 될 것이라고 대단히 감사합니다. 감사!

답변

3

당신이 찾고 있습니다 :

SELECT 
     A.CHANNEL AS CHANNEL_ID, 
     A.START AS START, 
     A.STOP AS STOP, 
     A.VALUE AS SIGNAL, 
     B.VALUE AS NOISE 
FROM 
     table2 as A 
     JOIN table2 as B 
     ON 
      A.CHANNEL = B.CHANNEL AND 
      A.START = B.START AND 
      A.STOP = B.STOP AND 
      A.TYPE = 'signal' AND 
      B.TYPE = 'noise' 
+0

은 그냥이 명확 [SQL 바이올린 코드]를 참조하기 위해 (http://sqlfiddle.com/#!3/8bde6/1) – Yaroslav

관련 문제