2013-10-16 4 views
1

ID 목록과 값 목록을 검색해야하는 쿼리와 함께합니다.teradata sql 여러 번 단일 값으로 표시합니다.

그런 다음 둘 이상의 값이있는 ID에 대해 새 값을 캐스팅해야합니다. 예를 들어

는 :

ID   COLOR 
1   BLUE 
1   GREEN 
2   ORANGE 

내가 반환 할 것은 다음과 같이이다 :

ID   COLOR 
1   MULTIPLE 
2   ORANGE 

지금까지, 나는 ROW_NUMBER() 및 OVER (BY 파티션) 모두를 검색하는 데 사용했습니다 결과와 번호.

는 그러나 나는 빙빙 돌고 박히.

나는 (행 수> = 2) 나는 "MULTI"로 캐스팅해야하는 ID를 얻을 여러 번이 그 ID에 의해 제한 할 수 있습니다.

하지만 여러 값 ID에도 행 번호가 1이기 때문에 하나의 값 (= 1)을 가진 ID로 제한하면 같은 값이 포함됩니다. 종류의이 같은 두 번 다중 값-ID를 계산 :

ID   COLOR 
1   BLUE 
1   MULTIPLE 
2   ORANGE 

그래서 질문 : 어떻게 하나 개의 값이 그와는 별도의 여러 값을 가진 모든 ID를 얻을 수 있나요?

+0

다른 질문에 중복 된 ID 값이있는 색상에 새 ID 번호를 적용하려고하면 다른 답변이 적용됩니다. 내 대답은 당신이 원래 찾으려고했던 것을 처리합니다. –

답변

1

이 사용 창 집계 기능을 수행하는 방법 중 하나입니다 잘 작동하는 것 같다 :

CREATE VOLATILE TABLE MyTable, NO FALLBACK 
(MyID SMALLINT NOT NULL, 
MyColor VARCHAR(10) NOT NULL 
) 
PRIMARY INDEX (MyID) 
ON COMMIT PRESERVE ROWS; 

INSERT INTO MyTable VALUES (1, 'BLUE'); 
INSERT INTO MyTable VALUES (1, 'GREEN'); 
INSERT INTO MyTable VALUES (2, 'ORANGE'); 

SELECT * 
    FROM MyTable; 

SELECT MyID 
    , CASE WHEN MyCount = 1 
      THEN MyColor 
      ELSE 'MULTIPLE' 
     END AS MyNewColor 
    FROM (SELECT MyID 
      , MyColor 
      , ROW_NUMBER() OVER (PARTITION BY MyID 
            ORDER BY MyColor) AS MyRowNum 
      , COUNT(*) OVER (PARTITION BY MyID)  AS MyCount 
      FROM MyTable 
     ) DT1 
    WHERE MyRowNum = 1; 

결과 :

MyID MyNewColor 
---- ---------- 
2  ORANGE 
1  MULTIPLE 
+0

고마워요, 롭. 나는 당신의 제안을 사용하여 일하는 해결책을 찾을 수 있었다. – user2820576

+0

여러분을 환영합니다! –

4

이 시도 :

SELECT id, 
CASE WHEN COUNT(color) > 1 THEN 'MULTIPLE' 
    ELSE MAX(color) 
END AS color 
FROM Table1 
GROUP BY id 

내가 SQLFIDDLE http://sqlfiddle.com/#!6/daf77/4에서 테스트하고 여기에

+0

나는 그것을 시험하고있다. 그러나 그것은 계속해서 "GROUP BY와 WITH ... BY 절이 집계 함수를 포함하지 않을 수도있다." – user2820576

+0

이상하게도 표준 SQL이긴하지만 WITH BY를 사용하지는 않습니다. 당신은 다른 RDBMS이 작동 물론 –

+1

에 바이올린에 작품을 확인할 수 있습니다, 그것은 결과의 마음을 얻을 수있는 표준 방법입니다. user2820576 내가 먼저 내 마음의 눈이 CASE 문을 내부 집계를 잡았과는 테라 데이타 구문의 관점에서 잘 보이지 않았다 보았다 어떤 이유로 – dnoeth

관련 문제