左侧没有返回记录加入MS Access中的不等式

时间:2015-05-20 09:14:12

标签: left-join ms-access-2013 inequality

描述

您好,

我有一个查询在左连接中使用相同的表两次不等式,但它不会产生任何记录,即使我使用左连接。我使用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。日期是该日期,包括时间。

目标

此查询的目标是在同一工作日和小时查找所有以前的数据,而不再选择当前记录(因此存在不等式)。

我意识到我可以简单地将不等式作为> =来运行,然后删除=记录。所以我确实有一个简单的解决方法,我无法理解为什么它在上面写的时候不会起作用。

谢谢大家的关注。

1 个答案:

答案 0 :(得分: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]

最亲切的问候..