2011-05-02 4 views
0

계산 결과를 기반으로 case 문을 수행하고 싶습니다. 같은사례 통계에 따라 계산

뭔가 :이 같은 몇 가지 다른 변화를 시도했지만 아무 소용에 한

Column 'column2' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. 

:

SELECT 
    CASE 
     WHEN count(distinct column) = 1 
      THEN Foo 
     WHEN count(distinct column) = 2 
      THEN foo2 
    END, 
    column2 
FROM 
    TABLE 

은 위 같은 오류가 발생합니다. MS SQL 2005

+0

당신이 실제로 해결하려고하는 문제를 설명하기 위해 더 좋을 수도 ... –

+0

또한 사용하는 RDBMS하는 우리에게 말해. –

+0

@Mitch - 기본적으로 여러 값 (예 : "dog, cat, goat, foo")이있는 경우 '% term %'와 같은 열을 선택해야하며 그렇지 않으면 단 하나의 값만 필요합니다. – mlissner

답변

0

이 해결 어제 얻었다. 다른 별칭을 사용하여 테이블에 두 번 가입하고 각기 다른 조인 조건을 사용하여 필요한 작업을 수행 할 수있었습니다. 따라서 올바른 값만 가진 특수 목적의 테이블이 있었으므로 카운트 작업을하지 않아도됩니다.

추상적 코드에 대한 죄송합니다

,하지만 결과는 유사했다 :

SELECT 
    CASE 
     WHEN table1.field IS NOT NULL 
      THEN table1alias1.column1 
     WHEN table2.field IS NOT NULL 
      THEN table1alias2.column1 
    END, 
    column2 
FROM 
    TABLE0 
    LEFT OUTER JOIN TABLE1 on TABLE0.id = TABLE1.field AND 
     TABLE1.column1 LIKE '%foo%' as TABLE1ALIAS1 
    LEFT OUTER JOIN TABL1 on TABLE0.id = TABLE1.field AND 
     TABLE1.column1 LIKE '%fork%' as TABLE1ALIAS2 
1

를 사용

당신은 2 열 BY GROUP에 있습니다

SELECT 
    CASE 
     WHEN count(distinct column) = 1 
      THEN Foo 
     WHEN count(distinct column) = 2 
      THEN foo2 
    END, 
    column2 
FROM 
    TABLE 
GROUP BY Column2 
관련 문제