2013-03-31 3 views
6

현재 팩트 테이블을 채우려하고 있는데 필요한 시간 ID를 채우는 데 문제가 있습니다. 시간 차원이 완전히 채워지고 완료됩니다. 기본적으로 시간 차원에서 각 행은 15 분입니다. 팩트 테이블은 통화에 대한 세부 정보를 채 웁니다. 그리고 스테이징 콜 테이블에서 나는 콜의 시작과 끝 시간을 갖는다.내부 두 값 사이에 합치다 ​​

차원을 조인하여 사실 테이블을 채우고 싶습니다. 시간 시작까지 준비 테이블에서 차원의 time_Start가 준비의 시작과 끝 시간 사이에있을 때 .. 쿼리를 실행했습니다. 아래의 = 연산자를 사용하지만 작동하지 않는 것 및 단지 100 행을 꺼낼 때 더 많은 4000 같은 기대하고 있어야합니다. = 대신 BETWEEN 사용할 수 있습니까?

INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start 
WHERE Time_Start BETWEEN incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate 

감사합니다.

+1

너도 해봤 니? 어떤 오류가 있었습니까? – Oded

+0

난 아무런 오류가 발생하지 않으며 그것은 행 카운트 문제가 실행됩니다, 내 행 카운트가 더 낮아지면 이론상 그 데이터를 시간 분할로 증가 시키면 감소하지 않을 것입니다. –

답변

5

편집 :

귀하의 가입이 올바르지 않습니다. 의 형식 당신이어야합니다 조인

Select column from table A 
INNER JOIN table b on 
    A.column = B.column 
INNER JOIN table c on 
    B.column = c.column 
Where B.column Between start_date AND end_date 

당신은

INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start 
WHERE Time_Start > incoming_measure.StartTimeDate AND Time_Start < incoming_measure.EndTimeDate 

당신은 또한 사용할 수있는 yyyy-mm-dd 형식을 사용하는 것이 중요 sqlserver를 들어,

또한 <> 연산자를 사용할 수 있습니다 Between

INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start 
WHERE Time_Start Between incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate 
+0

고맙습니다. 웬일인지 어떤 행이라도 전혀 사용하지 않고, 그 사이에 내가 사용하고있는 행이있다. 조인은 항상 a =가되어야합니까, 아니면 그 사이 일 수 있습니까? –

+0

@RichardC 내 최근 편집을 참조하십시오, 당신의 조인 구문이 잘못되었다고 생각합니다. –

+0

건배는 의미가 있습니다. 1 건, 4 개의 내부 조인이 있습니다. 조인을 하나씩 배치 한 다음, 끝까지 모두 배치합니까? –

관련 문제