MSSQL

mssql group by 작은팁

스쿠터로세계일주 2011. 4. 6. 14:33

뭐...대부분 알고 있겠지만...혹시나 모르실 분을 위해 정리해둔다.

 

group by에 대한 상세한 설명은 아니고 그냥 팁 하나다.

 

예를들어서....일년의 매출액이 있는데 월별매출 총액을 뽑고싶다?

 

하지만 테이블에는 월을 구분해줄 어떤것도 없다? 단지 구매일 정보(연도-월-일-시간-분-초-..)정도?

 

수많은 방법중 바로 생각나는 방법이라면 구매일정보를 문자열로 해서 left함수로 잘라서 구분한다? 어떻게?

 

left함수로 자른 값으로 저장한 테이블을 다시 감싸서 그 값을 구룹으로 묶어서?

 

예)

select did, sum(amt) as amt from (

select left(CONVERT(CHAR(8), d_date, 112),6) as did,amt from buylist as t1 ) tmp

group by did

 

맞다...하지만...이 구문은 group by 에 의해서 처음부터 한번에 나올 수 있었던 것이였다...

 

select left(CONVERT(CHAR(8), d_date, 112),6) as did,amt from buylist as t1 group by left(CONVERT(CHAR(8), d_date, 112),6)

 

그렇다..group by 는 반드시 그 컬럼의 전체값만을 가지고 할 수 있는 것이 아니고, 그 컬럼의 일 부분만을 가지고도 group by 할 수 있었던 것이다...............모으면 모르고 알면 아는......아웅...