从两个具有最新日期的表中检索联接的数据

时间:2019-05-23 13:31:36

标签: plsql

我需要编写一个过程,该过程的输出游标的列为:source_serial (number), source_readout_type_id (number), source_indicator_id (number), source_read_date_latest (date)

source_serial来自HEADERS表,而其他功能来自ITEMS表。

对于列的所有组合:source_serial (number), source_readout_type_id (number), source_indicator_id (number),检索具有最新日期的组合。

    procedure get_items_latest(       o_cur_results            out sys_refcursor,
                                      result_code out number)

   is

   begin

   result_code:=0;
   open o_cur_results for
   select 
   h.source_serial,
   i.source_readout_type_id,
   i.source_indicator_id
   /*latest date*/

      from log_push_readouts_headers h

      join log_push_readouts_items i
        on /*latest date*/;

                   commit;

                        exception      when others then
        result_code :=9200;
        rollback;
        pkg_common.insert_log_record(p_source => 'get_items_latest',
                p_type => 'Er',
                p_message => sqlerrm);

   end;

有人可以告诉我如何写“最新日期”条件吗?

1 个答案:

答案 0 :(得分:0)

我会写下来。

SELECT hdr.source_serial 
      ,its.source_readout_type_id 
      ,its.source_indicator_id 
      ,MAX (its.source_read_date) AS source_read_date_latest
FROM   headers hdr
      ,items   its
GROUP BY hdr.source_serial 
        ,its.source_readout_type_id 
        ,its.source_indicator_id 

这是笛卡尔联接(这是两个没有联接条件的表),并且将返回最多计数(标题)*计数(行)行,因此如果每个表中有1.000.000行,则最多为1万亿行