当两列重复时,只选择最后一个日期



我需要从三个不同的表中选择七列,只有当其中一列具有特定值时。当两列(TAGNAMETAGNUMMER(都重复时,我还需要只选择最后一个日期。我使用以下代码:

select c.AKEY, c.AKT_DATUM, c.TAGNAME, c.TAGNUMMER, 
cd.TEILANLAGEN_ID, x.TP_GSAP_KZ, c.KLASSEN_ID
from T0EM01 c, T0EM03 x, T0AD07 cd
where cd.TEILANLAGEN_ID = '219A'
inner join
(select c.TAGNAME and c.TAGNUMMER max(C.AKT_DATUM)
where T0EM01 c c.TAGNAME and T0EM01 c c.TAGNUMMER = m.max_date

where cd.TEIANLAGEN_ID = '219A'之前,它运行良好(但有超过200万行(。

如何进行筛选,以便当TAGNAMETAGNUMMER在两行或多行中重复时,我只选择最新日期?

"超过200万行";如果你把这三张桌子合在一起,可能会少一些。按照你的说法,你正在生成笛卡尔连接,并且有太多的行。

from t0em01  c,
t0em03  x,
t0ad07  cd

我不知道他们是如何结合在一起的,所以我只是猜测;你应该知道。

截至";最大日期值";,一种选择可能是使用子查询,也可以正确地连接到其他表。再一次,我不知道该如何加入他们。

改进:

select c.akey,
c.akt_datum,
c.tagname,
c.tagnummer,
cd.teilanlagen_id,
x.tp_gsap_kz,
c.klassen_id
from t0em01 c join t0em03 x on x.id = c.id          --> I'm just 
join t0ad07 cd on cd.id = c.id        --  guessing here
where cd.teilanlagen_id = '219A'
and c.akt_datum = (select max(c1.akt_datum)       --> subquery, to return
from t0em01 c1                 --  only the MAX date value
where c1.tagname = c.tagname
and c1.tagnummer = c.tagnummer
);

最新更新