Я пытаюсь узнать местоположение последнего перемещения элемента с помощью функции sql с кодом ниже. Pretty basi c, я просто пытаюсь получить максимальную дату и время. Если я запускаю sql как обычный выбор и жёстко кодирую номер элемента в ATPRIM, я получаю только одно местоположение. Но если я создаю эту функцию, а затем пытаюсь запустить ее, а затем передать ей номер элемента, я получаю каждое вхождение в файле истории, а не только МАКС, который будет самым последним. Кроме того, я попробовал Select Distinct, и он ничего не сделал для меня.
- ATOGST = Местоположение элемента
- ATPRIM = Элемент
- ATDATE = Дата
- ATTIME = Время
CREATE FUNCTION ERPLXU/F@QAT1(AATPRIM VARCHAR(10))
RETURNS CHAR(50)
LANGUAGE SQL
NOT DETERMINISTIC
BEGIN DECLARE F@QAT1 CHAR(50) ;
SET F@QAT1 = ' ' ;
SELECT ATOGST
INTO F@QAT1 FROM ERPLXF/QAT as t1
WHERE ATPRIM = AATPRIM
AND ATDATE = (SELECT MAX(ATDATE) FROM ERPLXF/QAT AS T2
WHERE T2.ATPRIM = AATPRIM)
AND ATTIME = (SELECT MAX(ATTIME) FROM ERPLXF/QAT AS T3
WHERE T3.ATPRIM = AATPRIM
AND T3.ATDATE = T1.ATDATE) ;
RETURN F@QAT1 ;
END
РЕДАКТИРОВАТЬ: Итак, что я пытаюсь сделать, это получить это местоположение, и я заставил его работать на моем iSeries в str sql, но проблема в том, что мы используем веб-приложение под названием Web Object Wizard (WoW), которое позволяет нам использовать sql для создания отчетов, более удобных для пользователя. Ниже приведено то, что я пытался заставить работать, но подзапрос в select не работает в WoW, поэтому я пытался создать функцию, которая, как нам известно, работает в других приложениях.
SELECT distinct t1.atprim, atdesc, dbtabl, dbdtin, dblife, dblpdp,
dbcost, dbbas, dbresv, dbyrdp, dbcurr,
(select atogst
from erplxf.qat as t2
where t1.atprim = t2.atprim and atdate = (select max(atdate) from
erplxf.qat as t3 where t2.atprim = t3.atprim) and attime = (select
max(attime) from erplxf.qat as t4 where t1.atprim = t4.atprim and
t1.atdate = t4.atdate)
) as @113_ToLoc
FROM erplxf.qat as t1 join erplxf.qdb on atassn = dbassn
where dbrcid = 'DB'
and dbcurr != 0
Вместо этого этого подзапроса в конце выбора это будет просто
, erplxu.f@qat1(atprim) as @113_ToLoc