2015-05-20 54 views
0

說明

嗨,在左沒有記錄返回等式與不等式加入在MS Access

我必須使用同一個表查詢兩次在左側有一個不平等的加入,但它不會產生任何記錄,即使我正在使用左連接。我使用的MS Access 2013年

代碼

的代碼是:

SELECT DCT01A.*, 
     DCT01B.* 

FROM    utb_DCT_01_DailyConversionTrends AS DCT01A 

     LEFT JOIN utb_DCT_01_DailyConversionTrends AS DCT01B 

     ON   DCT01A.[Hour]   = DCT01B.[Hour] 
       AND DCT01A.[WeekDay]  = DCT01B.[WeekDay] 
       AND DCT01A.[Specification] = DCT01B.[Specification] 
       AND INT(DCT01A.[Date])  > INT(DCT01B.[Date]) 

數據

我期待(目前,儘管這將在以後改變),其內部聯接會導致沒有記錄產生。這是因爲這只是測試數據,日期只有兩天。

小時和星期幾指的是當前一天中的小時和一週中的星期幾。規範是一個ID。日期是那個日期,包括時間。

目標

我的這個查詢的目標是找到在同一工作日和小時以前所有的數據,而無需再次選擇當前記錄(因此不等式)。

我意識到我可以簡單地運行不等式爲> =代替,然後刪除=記錄。所以我有一個簡單的解決方法,我只是不明白爲什麼它不會工作時,如上所述。

謝謝大家看這個。

回答

0

這對你有用嗎?

SELECT * FROM 

(
SELECT DCT01A.*, 
     DCT01B.* 

FROM    utb_DCT_01_DailyConversionTrends AS DCT01A 

     LEFT JOIN utb_DCT_01_DailyConversionTrends AS DCT01B 

     ON   DCT01A.[Hour]   = DCT01B.[Hour] 
       AND DCT01A.[WeekDay]  = DCT01B.[WeekDay] 
       AND DCT01A.[Specification] = DCT01B.[Specification] 
       AND INT(DCT01A.[Date])  >= INT(DCT01B.[Date]) 
) 

WHERE 
DCT01A.[Date] <> DCT01B.[Date] 

最親切的問候..

+0

您好,感謝您的幫助,雖然這仍然不會產生記錄,作爲唯一的比賽是相同的日期和時間(由於我有限的數據)。我知道這樣會很好,當我在數據集中有更多的日期和時間時,但是我希望它能保證DCT01A始終顯示,即使沒有匹配(不包括'='匹配)。謝謝。 – user71540

相關問題