Sql 如何将“选择”上的“最大/最小日期”列与数据所在的最后日期关联

Sql 如何将“选择”上的“最大/最小日期”列与数据所在的最后日期关联,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我必须用两个参数连接一个表,以显示细节的最后更新状态,以检查完成/正在进行的最大/最小。。。。我能为此做些什么 我已尝试左联接,但它返回null SELECT a.showonly , a.want_this_parameter_lastdate , min(a.xdate) start , max(a.xdate) stop , b.lastdate FROM samedatabase a LEFT JOIN (SELECT xdat

我必须用两个参数连接一个表,以显示细节的最后更新状态,以检查完成/正在进行的最大/最小。。。。我能为此做些什么

我已尝试左联接,但它返回null

SELECT a.showonly 
     , a.want_this_parameter_lastdate
     , min(a.xdate) start
     , max(a.xdate) stop
     , b.lastdate
  FROM samedatabase a
       LEFT JOIN (SELECT xdate lastdate
                       , want_this_parameter_lastdate 
                    FROM samedatabase 
                   WHERE ROWNUM = 1 
                  ORDER BY xdate DESC) b
              ON a.want_this_parameter_lastdate = b.want_this_parameter_lastdate
 WHERE something IN (SELECT DISTINCT equalsomething 
                       FROM another WHERE input like '...') 
   AND xdate> sysdate - 7
GROUP BY a.showonly, a.want_this_parameter_lastdate, b.lastdate
ORDER BY start ASC;
在我询问之后,我得到了这个

showonly|want_this_parameter|start  |stop   |lastdate
a1      |b1*                |5/7/19 |6/7/19 |(null)
a2      |b2**               |6/7/19 |7/7/19 |(null)
a3      |b1*                |7/7/19 |8/7/19 |(null)
a4      |b2**               |9/7/19 |10/7/19|(null)
a5      |b4                 |10/7/19|11/7/19|(null)
我希望这一站是a1中使用的最后一个b1,最后一个日期是所有表格中使用的最后一个b1

showonly|want_this_parameter|start  |stop   |lastdate
a1      |b1*                |5/7/19 |6/7/19 |12/17/19--Last B1 used
a2      |b2**               |6/7/19 |7/7/19 |11/17/19--Last B2 used
a3      |b1*                |7/7/19 |8/7/19 |12/17/19--Last B1 used
a4      |b2**               |9/7/19 |10/7/19|12/17/19--Last B2 used
a5      |b4                 |10/7/19|11/7/19|12/17/19--Last B4 used

*Same b1
**Same b2
更新 我终于明白了这一点,但仍然担心查询性能的时间 因为马克斯。。。能把整张桌子都拿来吗? 我如何才能提高这一性能

选择a.showonly ,a.想要\u此\u参数\u lastdate ,mina.xdate启动 ,maxa.xdate停止 ,b.最后日期 来自samedatabase a 左连接选择MAXxdate lastdate,想要\u此\u参数\u lastdate 来自samedatabase 按需要分组\u此\u参数\u lastdate b 在a.want\u this\u parameter\u lastdate=b.want\u this\u parameter\u lastdate上 在这里,选择不同的等式 从另一个 其中输入像“…” 和xdate>sysdate-7 分组依据a.showonly,a.want\u此参数\u lastdate,b.lastdate 按start ASC订购;
我认为简单的子查询将使工作更快,这样可以消除不必要的双重分组:

select showonly, parameter, min(xdate) min_dt, max(xdate) max_dt,
       (select max(xdate) from samedatabase where parameter = s1.parameter) lst_dt
  from samedatabase s1
  where xdate > sysdate - 7
    and something in (select equalsomething from another where input like 'i%')
  group by showonly, parameter

我认为简单的子查询将使工作更快,这样可以消除不必要的双重分组:

select showonly, parameter, min(xdate) min_dt, max(xdate) max_dt,
       (select max(xdate) from samedatabase where parameter = s1.parameter) lst_dt
  from samedatabase s1
  where xdate > sysdate - 7
    and something in (select equalsomething from another where input like 'i%')
  group by showonly, parameter

没有表中的示例行,很难知道您期望的是什么。向我们展示您表中的一些示例行,您希望得到这个结果。@KaushikNayak我添加了更多示例行和说明。感谢您的建议没有表中的示例行,很难知道您期望的是什么。向我们展示您表中的一些示例行,您希望得到这个结果。@KaushikNayak我添加了更多示例行和说明。谢谢你的建议