2011-04-29 3 views
3

만 1 값으로 만 행을 얻을 수 있습니다 :SQL 쿼리 나는이 같은 테이블이 다른 열

Sample Table

내가 = 21 만 주를 만 ProjectID 년대를 반환하는 쿼리를해야합니다. 즉 나는 단지 그 경우, 상태가 다른 숫자와 동일하기 때문에 내가, ProjectID 1, 3과 4 & 6 레코드를 원하지 않는 2 & 5.

을 ProjectID 원하는

답변

3

추론은, 상태, 외부 선택에서 = 21

  • 있는 모든 ProjectID 년대 만 해당 상태를 가지고 만 ProjectID 년대를 유지, 부속 선택에서
    • 처럼 간다 = 21 HAVING 절을 사용

    지정된 동일한

    SELECT ProjectID 
    FROM table t1 
         INNER JOIN (
          SELECT ProjectID 
          FROM table 
          WHERE state = 21 
         ) t2 ON t2.ProjectID = t1.ProjectID 
    GROUP BY 
         ProjectID 
    HAVING COUNT(*) = 1   
    
  • +0

    설명해 주셔서 감사합니다. –

    1
    select ProjectID,count(State) from table group by ProjectID having count(state)=1; 
    
    +0

    당신은 처음으로 답을주었습니다. 그래서 당신의 이름을 받아 들였습니다. –

    +0

    @dev - 필요한 작업을 수행합니까? 이 경우 귀하의 질문을 오해했습니다. –

    2

    이 방법에 의해 인 ('값')가 하나의 상태 값과 모든 프로젝트를 선택 SQL 문 하나

    SELECT ProjectID 
    FROM  atable 
    GROUP BY ProjectID 
    HAVING COUNT(*) = 1 
        AND MAX(State) = @State 
    

    또한 MIN, SUM 또는 AVG이 같은 EFF와 State의 값을 확인하는 데 사용할 수있는 ect (유일한 값이어야하기 때문에).