2012-01-17 3 views
0

모두 인사하기.SQL Server : 빈 행을 생성 하시겠습니까?

나는 테이블과 SQL 서버 2008 Express 데이터베이스는 다음과 같은 유사한 tbl_Sales라고 불리는이 :

Merchant | Sales | Month 
Comp.1  100  201101 
Comp.1  200  201102 
Comp.2  130  201102 
Comp.1  250  201103 
Comp.2  130  201103 
Comp.3  240  201103 
      . 
      . 
      . 
Comp.3  340  201111 
Comp.2  240  201112 
Comp.3  140  201112 

내가 MVC3 차트에서 다음 데이터를 생성합니다.

그러나 차트에는 모든 판매자의 데이터가 매월 충돌해야 충돌합니다.

Merchant 
Comp.1 
Comp.2 
Comp.3 
    . 
    . 
    . 
Comp.10 

어떤 제안 : 우리는 다음과 같은 필요한 모든 상인을 다른 테이블 tbl_Merchant 목록을 가질 수

Merchant | Sales | Month 
Comp.1  100  201101 
Comp.2  0  201101 
Comp.3  0  201101 
Comp.1  200  201102 
Comp.2  130  201102 
Comp.3  0  201102 
Comp.1  250  201103 
Comp.2  130  201103 
Comp.3  240  201103 
      . 
      . 
      . 
Comp.3  340  201111 
Comp.1  0  201112 
Comp.2  240  201112 
Comp.3  140  201112 

:

그래서 다음과 같은 결과를 수행하는 SQL을위한 방법이 환영합니다.

대단히 감사합니다.

답변

2

예 -과 같이 - 카티가 (당신이 모든 상인을 위해 매달 행을 얻을 수 있도록), 다음 데이터 표에 가입 왼쪽으로보고되는 달에 상인의 조인을 수행

select mth.[Month], mct.Merchant, coalesce(s.Sales,0) Sales 
from (select distinct [Month] from tbl_Sales) mth 
cross join Merchant mct 
left join tbl_Sales s 
     on mth.[Month] = s.[Month] and mct.Merchant = s.Merchant 

(있는 경우 tbl_Sales가 특히 큰 경우 Sales 데이터에서 필요한 월 집합을 선택하는 대신 반복적 인 CTE 생성 월 목록에서 월의 필요한 범위를 인라인보기로 채우는 것이 더 빠릅니다.

관련 문제