如何摆脱子查询?

时间:2015-05-13 06:33:26

标签: sql axapta

在此请求中是否可以删除子查询,可能会替换为join notexist?

Axapta需要查询。

select count(*)
from rec join (
  select max(`date`) d, id 
  from rec
  where 
    `date`<"2013-05-03 00:00:00"
  group by id
) drec on rec.id = drec.id and rec.`date` = drec.d
where 
  rec.value>0;

1 个答案:

答案 0 :(得分:1)

您是否在尝试查找每个date的最大id的记录数?在这种情况下,类似于下面的代码可能在AX中起作用。我没有测试过,因为你没有提供表名等,所以可能需要进行一些调整:

YourTable rec;
YourTable rec2;

while select date, id, count(RecId) from rec
group by date, id
    where rec.value > 0
       && rec.date  < 03\05\2013
notexists join rec2
    where rec2.id == rec.id
       && rec2.date > rec.date 
       && rec2.date < 03\05\2013
{
    info(strFmt('Id = %1, date = %2, number of records = %3', rec.id, rec.date, rec.RecId));
}