我需要编写一个过程,该过程的输出游标的列为: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;
有人可以告诉我如何写“最新日期”条件吗?
答案 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万亿行