SQL查询内连接和第二个表上的位置

时间:2017-02-21 15:12:44

标签: sql database oracle

我有一个oracle数据库,我正在尝试查询table1和内部连接中的数据与另一个table2,其中一列(date)等于最近的日期,而table2(built)中的另一列等于'是'。下面的查询没有找到where函数,也无法确定原因

SELECT id, b, c, d 
FROM table1 a 
INNER JOIN table2 b on b.id = a.id 
WHERE b.date =(SELECT MAX(date) FROM table2) AND b.built = 'yes'

实际查询

SELECT m_tp_str, m_tp_trn, m_tp_dte, m_tp_buy, m_tp_qtyeq, m_tp_nom, m_instr, 
       m_tp_p, m_tp_status2 
FROM   HA_PRD_DM.TP_ALL_REP a INNER JOIN HA_PRD_DM.UDF_CURR_REP b 
           ON a.m_udf_ref2 = b.m_nb 
WHERE  b.m_rep_date2 = (SELECT MAX(c.m_rep_date2) FROM HA_PRD_DM.UDF_CURR_REP c)
   AND b.m_purpose = 'yes'

1 个答案:

答案 0 :(得分:1)

您可以使用分析函数执行此操作:

SELECT id, b, c, d
FROM table1 a INNER JOIN
     (SELECT b.*, MAX(date) OVER (PARTITION BY b.id) as max_date
      FROM table2 b 
      WHERE built = 'yes'
     ) b
     ON b.id = a.id AND b.max_date = b.date;