2013-01-07 1 views
1

SQL 서버의 PIVOT에서 컬럼에 모든 다른 사람을 추가하는 것입니다 : 이제그것이 가능한이 SQL 서버에서 다음과 같이 나는 테이블 Pet.Info이

pet  age ... 
-------------------- 
dog  4 
cat  3 
pig  2 
dog  3 
... 

, 나는 테이블로 변환 할 개와 고양이의 평균 연령과 다른 모든 평균을 계산합니다. 다음과 같이 :

dog cat others 
------------------------- 
3.5  3  2 

PIVOT으로 할 수 있습니까? 여기

내가 얻을 수있는 것입니다 만, 사전에 조언을 다른 사람

SELECT * FROM 
(SELECT * FROM Pet.Info) AS B 
PIVOT (AVG(age) FOR pet IN ([dog],[cat])) AS C 

감사의 열의를 만들 수있는 방법이 보인다.

SELECT * 
FROM ( SELECT CASE WHEN pet NOT IN ('dog','cat') THEN 'others' ELSE pet END pet, 
       age 
     FROM Pet.Info) AS B 
PIVOT (AVG(age) FOR pet IN ([dog],[cat],[others])) AS C 

답변

3

이 시도해보십시오.

select avg(case when pet = 'dog' then age end) as dog, 
     avg(case when pet = 'cat' then age end) as cat, 
     avg(case when pet in ('dog', 'cat') then null else age end) as others 
from pet.info 

다른 사람들은 NULL을 다른 사람들에게 포함되도록 설정합니다.

+0

감사합니다. 훌륭한 작품입니다. 나는 PIVOT에서 트릭을 할 생각이었습니다. – Bob

1

당신은 이것에 대한 피벗을 사용할 필요가 없습니다 :

+0

감사합니다, 당신의 방법도 작동합니다. 그러나 @ 라멕의 방법은 내가 좋아하는 것이다. – Bob

+0

@Bob. . . 문제 없어. 이 예제에서 필자가 가지고있는 문제는 겹치지 않는 그룹의 평균뿐만 아니라 * 모든 * 애완 동물의 평균 연령을 얻고 자하는 경우입니다. –

관련 문제