我无法找到此SQL查询的解决方案。
让我根据下表解释你:
Group DATUM VALUE
1002 2017-03-29 12:01:00 0.1
1002 2017-03-29 12:02:36 0.2
1002 2017-03-29 12:03:40 0.1
1002 2017-03-29 12:04:44 0.2
2523 2017-03-29 12:05:47 0.3
2523 2017-03-29 12:06:51 0.1
2523 2017-03-29 12:07:55 0.2
2523 2017-03-29 12:08:59 0.3
2523 2017-03-29 12:09:03 0.4
3002 2017-03-29 12:10:07 0.5
我想获得每组的数据。因此,在上面的表格的基础上,GROUP: 1002
已更改为GROUP: 2523
,因此我希望收到GROUP: 1002
的所有记录,这是:
Group DATUM VALUE
1002 2017-03-29 12:01:00 0.1
1002 2017-03-29 12:02:36 0.2
1002 2017-03-29 12:03:40 0.1
1002 2017-03-29 12:04:44 0.2
并且当GROUP: 2523
完成并且值更改为GROUP: 3002
时,我将获得GROUP: 2523
的所有记录,依此类推......
这样做的原因:
每次GROUP
值更改时,原始数据都必须读入另一个程序(KNIME)(这里是SQL
的一部分),然后需要为每个组计算一些特定值,新表必须写在数据库中。
感谢您的帮助!
答案 0 :(得分:1)
您可以编写一个触发器来检查新插入是否包含除最新插入之外的其他组。在这种情况下,您必须调用一些例程将数据推送到您想要的位置。像这样:
create or replace trigger trg_latest_group_to_knime
before insert on mytable
for each row
declare
v_last_group integer;
begin
select max("GROUP") keep (dense_rank last order by datum)
into v_group
from mytable;
if :new.group <> v_last_group then
push_records_to_knime_for_group(v_last_group);
end if;
end trg_latest_group_to_knime;