Вопрос по процедурам и запросам
Добавлено: 18 июн 2005, 23:19
Привет!Переношу базу из paradox в FB. Вернее программа ИнфоПредприятие на FB. Хочу сделать процедуру расчета остатков ТМЦ у мат.отв.лица..
Вроде бы сделал,но почему то не происходит суммирования по одинковому коду .
Вот скрипт
BEGIN
for
/* Ýòî ðàñ÷åò ïðèõîäà òîâàðà*/
SELECT DISTINCT SPRMAT.kod , SPRMAT.nazvanie2 ,SUM(d_dvma.summa_ucheta* N_UCMA.KOYEF_POL2 ) SUMMA,SUM(D_DVMA.KOLICHESTVO * N_UCMA.KOYEF_POL2 ) OSTATOK, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
FROM D_DVMA
INNER JOIN SPRMAT ON (D_DVMA.kod22 = SPRMAT.KOD)
INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID)
INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII)
WHERE
(
(N_UCMA.SPRMATOTVPOLUCH = 1 )
and
(KOLICHESTVO <> 0) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol_pol=:mol) and (DVMATV.data2<=:dta)
)
GROUP BY SPRMAT.KOD, SPRMAT.NAZVANIE2, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
UNION
/* Ýòî ðàñ÷åò ðàñõîäà òîâàðà*/
SELECT DISTINCT SPRMAT.KOD , SPRMAT.NAZVANIE2,SUM(d_dvma.summa* N_UCMA.KOYEF_POL2 ) SUMMA, SUM( D_DVMA.KOLICHESTVO * N_UCMA.koyef_post2 ) OSTATOK, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
FROM D_DVMA
INNER JOIN SPRMAT ON (D_DVMA.KOD22 = SPRMAT.KOD)
INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID)
INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII)
WHERE
(
(N_UCMA.SPRMATOTVPOL = 1 )
and
(KOLICHESTVO <> 0) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol=:mol) and (DVMATV.data2<=:dta)
)
GROUP BY SPRMAT.KOD, SPRMAT.NAZVANIE2, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
INTO
:KOD,
:NAZVANIE2,
:OSTATOK,
:SUMMA,
:ED_IZM,
:KOD_GRUPPYI
DO
begin
kod_param=kod;
OSTS_PARAM=:summa;
SUMMA_PARAM=:ostatok;
name_PARAM=nazvanie2;
suspend;
end
end
Мало того почему то перепутываются выходные параметры остатков и суммой остатка...
Второй вопрос...Как использовать полученные результаты в просмотре VIEW? Можно ли процедуру использовать с запросом?
Вроде бы сделал,но почему то не происходит суммирования по одинковому коду .
Вот скрипт
BEGIN
for
/* Ýòî ðàñ÷åò ïðèõîäà òîâàðà*/
SELECT DISTINCT SPRMAT.kod , SPRMAT.nazvanie2 ,SUM(d_dvma.summa_ucheta* N_UCMA.KOYEF_POL2 ) SUMMA,SUM(D_DVMA.KOLICHESTVO * N_UCMA.KOYEF_POL2 ) OSTATOK, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
FROM D_DVMA
INNER JOIN SPRMAT ON (D_DVMA.kod22 = SPRMAT.KOD)
INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID)
INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII)
WHERE
(
(N_UCMA.SPRMATOTVPOLUCH = 1 )
and
(KOLICHESTVO <> 0) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol_pol=:mol) and (DVMATV.data2<=:dta)
)
GROUP BY SPRMAT.KOD, SPRMAT.NAZVANIE2, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
UNION
/* Ýòî ðàñ÷åò ðàñõîäà òîâàðà*/
SELECT DISTINCT SPRMAT.KOD , SPRMAT.NAZVANIE2,SUM(d_dvma.summa* N_UCMA.KOYEF_POL2 ) SUMMA, SUM( D_DVMA.KOLICHESTVO * N_UCMA.koyef_post2 ) OSTATOK, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
FROM D_DVMA
INNER JOIN SPRMAT ON (D_DVMA.KOD22 = SPRMAT.KOD)
INNER JOIN DVMATV ON (D_DVMA.IDLINK = DVMATV.ID)
INNER JOIN N_UCMA ON (DVMATV.VID_OPERACII = N_UCMA.KOD_OPERACII)
WHERE
(
(N_UCMA.SPRMATOTVPOL = 1 )
and
(KOLICHESTVO <> 0) and (DVMATV.ID<>:nop_id) and (DVMATV.kod_mol=:mol) and (DVMATV.data2<=:dta)
)
GROUP BY SPRMAT.KOD, SPRMAT.NAZVANIE2, SPRMAT.ED_IZM, SPRMAT.KOD_GRUPPYI
INTO
:KOD,
:NAZVANIE2,
:OSTATOK,
:SUMMA,
:ED_IZM,
:KOD_GRUPPYI
DO
begin
kod_param=kod;
OSTS_PARAM=:summa;
SUMMA_PARAM=:ostatok;
name_PARAM=nazvanie2;
suspend;
end
end
Мало того почему то перепутываются выходные параметры остатков и суммой остатка...
Второй вопрос...Как использовать полученные результаты в просмотре VIEW? Можно ли процедуру использовать с запросом?