0

描述

你好,

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

数据

我预计(目前,尽管稍后会改变)内部连接将导致不产生任何记录。这是因为这只是测试数据,日期只跨越两天。

Hour 和 WeekDay 是指当前一天中的小时和一周中的星期几。规范是一个 ID。日期是那个日期,其中包括时间。

目标

我的这个查询的目标是在同一周的一天和一小时找到所有以前的数据,而不是再次选择当前记录(因此不等式)。

我意识到我可以简单地将不等式运行为 >= ,然后删除 = 记录。所以我确实有一个简单的解决方法,我只是不明白为什么按上述方式编写它不起作用。

谢谢大家看这个。

4

1 回答 1

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]

最亲切的问候..

于 2015-05-20T21:03:47.883 回答