Мне нужно руководство, как лучше всего это сделать. Я запустил отчет, в котором показаны детали, у которых не было продаж за «последние 2 месяца». Давайте пока предположим, что это будет выполняться в начале каждого месяца. Я сделал это жестко закодированным, и это необходимо автоматизировать для запуска в кристальном отчете. То, как я это сделал, было 4 запроса. первый выбирает предметы, которые «Доступны для продажи» и находятся в инвентаре. Кажется, мы можем легко превратить это в представление.
этот второй здесь выбирает товары, которые были проданы за рассматриваемые 2 месяца. Должна ли это быть хранимая процедура? если да, то у меня нет предыдущего опыта. с SP на IBM i. Но мне кажется сп лучше всего.
Здесь мы выбираем записи, когда были продажи в 4-м или 5-м месяце. это жестко закодировано. Нам нужно сделать это за последние 2 месяца в любое время. если программа выполняется в июне, нам нужно посмотреть на май и апрель. Год должен быть соответствующим. Текущий год, если мы не проводим это в январе-феврале. тогда мы хотим ноябрь-декабрь 2013 года и т. д.
SELECT
ALL T01.IAPRT#, T01.IA101, T01.IAPRLC, T01.IARCC1, T01.IARCC2,
T01.IARCC3, T01.IARCC4, T01.IARCC5, T01.IARCC6, T01.IARCC7,
T01.IARCC8, T01.IARCC9, T01.IARC10, T01.IARC11, T01.IARC12,
T01.IARC13, T01.IARC14, T01.IARC15, T02.IQYER#, T02.IQA04,
T02.IQA05, (T02.IQA04+T02.IQA05) AS TOT45
FROM ASTDTA.ICPRT1 T01 LEFT OUTER JOIN
ASTDTA.ICSUM1 T02
ON T01.IAPRT# = T02.IQPRT#
WHERE IAORDF = '1'
AND IARCC6 = 'INV'
AND T02.IQYER# = 2014
AND T02.IQTSCC = 'I'
AND (T02.IQA04+T02.IQA05) <> 0
ORDER BY T01.IAPRT# ASC
T02.IQA04 + T02.IQA05 <> 0
— что произойдет, если другой столбец будет отрицательным (поэтому сумма равна 0)? Вызовите отдельные значения соответственно. Самое интересное будет, когда вы запустите это в феврале, и вам нужны продажи из 2 разных строк (декабрь 2013 года, январь 2014 года). Удачи! - person Clockwork-Muse   schedule 10.06.2014