此SQL查询的JOIN类型

时间:2018-11-30 10:34:27

标签: sql excel vba join

我在Excel Tables上使用SQL感到很开心,但无法为我想做的事情找出正确的查询。您介意为我指明正确的方向以获得以下结果吗?

我有2个表要加入:

“表3”

SN  IN DATE
1   10.09.2018
2   27.08.2018
3   19.08.2018
4   20.08.2018

序列号是唯一的

“数据库”

SN  REF CREATION DATE   TIMESTAMP
1   AAA 11.09.2018  26.10.2018
1   AAB 11.09.2018  27.10.2018
2   ACF 11.09.2018  27.10.2018
2   CDR 11.09.2018  27.10.2018
3   ODC 11.09.2018  27.10.2018
4   RTF 11.09.2018  27.10.2018
4   IKG 11.09.2018  27.10.2018
4   RNO 11.09.2018  27.10.2018

REF确实仅属于一个SN

我想要的结果(在查询中,我包括更多列以帮助我交叉检查结果):

SN  REF
1   AAB
2   ACF
2   CDR
3   ODC
4   RTF
4   IKG
4   RNO

我希望所有REF都带有TIMESTAMP = TODAY(以我今天为例,今天是2018年10月27日),并且IN DATE

这是我到目前为止提出的查询:

strSQL = "SELECT [Table3$].[SN],[Table3$].[IN DATE],[Database$].[REF],[Database$].[CREATION DATE],[Database$].[TIMESTAMP] " & _
            "FROM [Table3$] " & _
            "LEFT JOIN [Database$] ON [Table3$].[IN DATE]<[Database$].[CREATION DATE]"

我认为我需要左加入,但是结果给我的是不正确的。另外,我假设需要在哪里指定“今天”的价值。 我需要帮助来建立正确的逻辑。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

从我的角度来看,此查询将是您想要的:

strSQL = "SELECT [Table3$].[SN], [Table3$].[ IN DATE], [Database$].[NOTIFICATION NUMBER], [Database$].[CREATION DATE], [Database$].[TIMESTAMP] " & _
         "FROM [Table3$] INNER JOIN [Database$] ON [Table3$].[SN] = [Database$].[SN] " & _
         "WHERE [Table3$].[ IN DATE] < [Database$].[CREATION DATE] AND [Database$].[TIMESTAMP] = Date()"

我假设TIMESTAMP是日期字段,所以我使用过程Date来检索当前日期。

我无法对其进行测试,但至少应该使您处于正确的轨道。

顺便说一句:我想知道IN前面的空格是否正确:[ IN DATE]。毕竟,您都使用过两次。