我有一些看起来像这样的表:
表1
Column1
A
B
C
表2
column1 Id1 Id2
A 2 100
A 3 101
B 2 100
B 3 101
C 2 100
表3
Id2 Date Item Status
100 10/20/17 A1 A
101 10/21/17 A1 A
100 11/22/17 A2 I
101 11/23/17 A2 A
我的查询如下:
Select
Date, *
FROM TABLE1 T1
LEFT JOIN Table2 T2 ON
T1.Column1 = T2.Column2
LEFT JOIN Table3 T3 ON
T2.Id2 = T3.Id2
我想将状态为A的表3中最早的日期返回到查询中的日期列。
我能够使用此查询返回最早的日期,但无法使用联接将其整合到我的查询中。
SELECT
MIN(DATE)
FROM Table3
WHERE Id2 IN (100,101)
AND STATUS = 'A'
group by Id2, ITEM
如何在使用join子句的查询中获取最早的日期?
答案 0 :(得分:1)
接近我相信你正在努力做的事情的几种方法。
我认为最简单的方法是使用表3的子查询来简化搜索参数。
select * from table2 t2
LEFT JOIN
(Select Id2, Item, max(Date)from Table 3
WHERE Status = 'A'
GROUP BY Id2, Item)a ON t2.Id2 = a.Id2;
子查询执行过滤,然后快速连接到表2将获取所有数据。