【发布时间】:2017-02-09 17:21:50
【问题描述】:
表1
ColA ColB ColC
A 1 X
表2
ColA ColB ColD ColE
A 1 1/1/2017 No
A 1 1/2/2017 Yes
A 1 1/3/2017 Yes
期望的输出:
A 1 X 1/2/2017
寻找 E = "Yes" 的最早日期。
试过
SELECT Table1.ColA, Table1.ColB, Table1.ColC, min(Table2.ColD) as ColD
FROM Table1
LEFT JOIN Table2
ON Table1.ColA=Table2.ColA AND Table1.ColB=Table2.ColB
WHERE Table2.ColE="Yes"
GROUP BY Table1.ColA, Table1.ColB, Table1.ColC
但我在 Table1 中发现 ColB 为空的记录。该记录未包含在结果中。在这种情况下,ColE 是一个文本字段。
试图找出为什么在此查询中省略了 Table1 中的行 - 想要保持 Table1 完整,只需在适用的情况下添加 Table2 中的列。
【问题讨论】:
-
你的问题我不清楚,你的数据没有意义。我建议您编辑您的问题以更好地描述数据和format your SQL。此外,将表名和列名更改为比
Table1.ColA稍微抽象一点。也许People和Birthdays之类的。 -
在您的 SQL 查询中,尝试将
LEFT JOIN替换为RIGHT JOIN。