查询以将最早的日期添加到列中?

时间:2017-12-14 22:07:03

标签: sql sql-server

我有一些看起来像这样的表:

表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子句的查询中获取最早的日期?

1 个答案:

答案 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将获取所有数据。