2012-03-01 4 views
0

아마도 가장 어려운 것은 아닙니다.t1.date (t2.startdate와 t2.enddate 사이)로 관련없는 테이블을 조인하십시오.

관련 테이블에 묶여있는 뷰에서 ID를 쉽게 볼 수 있습니다. -> 쉽습니다. 이제는 다른 모든 테이블과 중요한 관계가없는 테이블이 있습니다. (BatchDates)

`ALTER VIEW [ECSUB].[FCT_Ext_Collection] 
AS 
SELECT  sh.id AS idSubmissionHistory, dh.id, dd.id AS Description, sch.id AS idScoringHistory, sh.CreationDate, sh.UpdateDate, bd.id AS BatchDateID 
FROM   ECSUB.SubmissionHistory AS sh INNER JOIN EC.DocumentHistory AS dh ON sh.id = dh.idSubmissionHistory 
         LEFT OUTER JOIN ECSM.ScoringHistory AS sch ON sh.idScoringHistory = sch.id 
         LEFT OUTER JOIN EC.DocumentDescriptions AS dd ON dd.id = dh.Description 
         LEFT OUTER JOIN ECSUB.AddressBilling AS ab ON sh.id = ab.id 
         LEFT OUTER JOIN ECSUB.AddressPremise AS ap ON sh.id = ap.id 
         CROSS JOIN EC.BatchDates AS bd --ON sh.documentdate between ....... 

GO` 

글쎄, 내 주요 테이블 'documentHistory'문서의 날짜를 포함, 나는이 떨어지는 일괄 적으로 정의해야합니다. 각 배치에는 ID와 시작일이 있습니다. 배치는 항상 1 개월입니다. 따라서 우리는 컬럼의 currentMonth를 사용

id month startdate 
1 2010-12-01 00:00:00.000 2010-12-01 00:00:00.000 
1 2011-01-01 00:00:00.000 2010-12-01 00:00:00.000 
1 2011-02-01 00:00:00.000 2010-12-01 00:00:00.000 
2 2011-03-01 00:00:00.000 2011-03-01 00:00:00.000 
2 2011-04-01 00:00:00.000 2011-03-01 00:00:00.000 
2 2011-05-01 00:00:00.000 2011-03-01 00:00:00.000 
3 2011-06-01 00:00:00.000 2011-06-01 00:00:00.000 
3 2011-07-01 00:00:00.000 2011-06-01 00:00:00.000 
3 2011-08-01 00:00:00.000 2011-06-01 00:00:00.000 
4 2011-09-01 00:00:00.000 2011-09-01 00:00:00.000 
4 2011-10-01 00:00:00.000 2011-09-01 00:00:00.000 
4 2011-11-01 00:00:00.000 2011-09-01 00:00:00.000 
5 2011-12-01 00:00:00.000 2011-12-01 00:00:00.000 
5 2012-01-01 00:00:00.000 2011-12-01 00:00:00.000 
5 2012-02-01 00:00:00.000 2011-12-01 00:00:00.000 
6 2012-03-01 00:00:00.000 2012-03-01 00:00:00.000 
6 2012-04-01 00:00:00.000 2012-03-01 00:00:00.000 
6 2012-05-01 00:00:00.000 2012-03-01 00:00:00.000 
7 2012-06-01 00:00:00.000 2012-06-01 00:00:00.000 
7 2012-07-01 00:00:00.000 2012-06-01 00:00:00.000 
7 2012-08-01 00:00:00.000 2012-06-01 00:00:00.000 
8 2012-09-01 00:00:00.000 2012-09-01 00:00:00.000 
8 2012-10-01 00:00:00.000 2012-09-01 00:00:00.000 
8 2012-11-01 00:00:00.000 2012-09-01 00:00:00.000 
9 2012-12-01 00:00:00.000 2012-12-01 00:00:00.000 
9 2013-01-01 00:00:00.000 2012-12-01 00:00:00.000 
9 2013-02-01 00:00:00.000 2012-12-01 00:00:00.000 
10 2013-03-01 00:00:00.000 2013-03-01 00:00:00.000 
10 2013-04-01 00:00:00.000 2013-03-01 00:00:00.000 
10 2013-05-01 00:00:00.000 2013-03-01 00:00:00.000 
etc........... 

그래서 나는 documentdate에 따라 일괄 ID를 가져해야합니다

이 훨씬 더 쉽게는 BatchDates 테이블에서 데이터를 이해할 수 있도록한다 시작일.

따라서 : documentDate이 startDate.month에 없다 (여기 사이에있다) 여기서 ...

나는 등, 크로스 조인, 조인 조합이 필요하면 내가 알지도 못하는 BatchDates 가입하세요 ...

미리 감사드립니다. L

답변

1
join BatchDates 
on datepart(yyyy,[document date]) = datepart(yyyy,[startDate]) 
and datepart(mm,[document date]) = datepart(mm,[startDate]) 
+0

좋아 보인다! 나는 그것을 시도하고 여기에보고 할 것이다. 고마워!! – laurens

+0

좋아, 이것은 내부/외부 조인과 함께 매력을 작동합니다. 고마워 ! – laurens

관련 문제