2013-03-31 48 views
6

我目前正試圖填充我的事實表,並且在填充所​​需的時間ID時遇到問題。時間維度已完全填充並完整。基本上在每個行的時間維度是15分鐘的時間段。事實表正在填充有關呼叫的詳細信息。而在分段呼叫表中,我有呼叫的開始和結束時間。內部加入BETWEEN兩個值

我想通過的時間開始加入維度上的臨時表來填充事實表和當TIME_START維度是在臨時的開始和結束時間之間..我已經運行查詢下面使用=運算符,但它似乎並沒有工作,只有當我應該期待更像4000的時候拉出100行。我可以使用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

我沒有得到任何錯誤,它運行的問題是行數,它使我的行數在理論上更低,如果它將數據分成timeID的,它應該增加數量不會減少 –

回答

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 

您可以使用<>運營商

而且,sqlserver重要的是要使用yyyy-mm-dd格式

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

您還可以使用Between

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

嗨,謝謝你,頂級解決方案返回由於某種原因,根本沒有行,而這兩者之間是我一直在使用的。連接總是必須是a =還是可以是BETWEEN? –

+0

@RichardC看到我最新的編輯,我認爲你的加入的語法是不正確的 –

+0

乾杯是有道理的。 1件事,我有4個內部連接,我把所有的連接一個接一個,然後所有的地方,並在最後? –