![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите плз как это будет в Interbase SQL [D7, IB6.x]
HMT © (2004-08-17 10:26:00)Это текст процедуры MS-SQL, уже три дня пытаюсь перести его в interbase. Смысл скрипта - суммирование прихода, вычитание расхода для получения остатков. Помогите плз, если кто синтаксис знает.
DELETE FROM Results
INSERT INTO Results SELECT DISTINCT(ProductName), SUM(Quantity) as Quantity from Inbound GROUP BY ProductName
DECLARE @ProductName varchar(500)
DECLARE @Discount int
DECLARE CT CURSOR FOR SELECT DISTINCT(ProductName), SUM(Discount) as Discount from Outbound GROUP BY ProductName
OPEN CT
WHILE 1=1 BEGIN
FETCH FROM CT INTO @ProductName, @Discount
IF @@fetch_status=-1
BREAK
IF @@fetch_status=-2
CONTINUE
UPDATE Results SET Quantity=Quantity-@Discount WHERE ProductName=@ProductName
END
DEALLOCATE CT
SELECT * FROM Inbound
SELECT * FROM Outbound
SELECT * FROM Results
Sandman25 (2004-08-17 11:03:00) [1]Или даже
select productname, sum(discount)
from
(
select productname, discount
from inbound
union all
select productname, -discount
from outbound
) a
group by productname
Sandman25 (2004-08-17 11:01:00) [2]Кстати, на MSSQL вместо ХП надо было написать:
select productname, sum(discount)
from
(
select productname, sum(discount) discount
from inbound
group by productname
union all
select productname, -sum(discount) discount
from outbound
group by productname
) a
group by productname
Соловьев (2004-08-17 10:42:00) [3]
> Чем можно заменить fetch_status?
нету такого
HMT (2004-08-17 10:42:00) [4]Да, тут.
thankz..щас попробую
Соловьев (2004-08-17 10:41:00) [5]
> DECLARE CT CURSOR FOR SELECT DISTINCT(ProductName), SUM(Discount)
> as Discount from Outbound GROUP BY ProductName
>
> OPEN CT
> WHILE 1=1 BEGIN
> FETCH FROM CT INTO @ProductName, @Discount
>
> IF @@fetch_status=-1
> BREAK
> IF @@fetch_status=-2
> CONTINUE
>
> UPDATE Results SET Quantity=Quantity-@Discount WHERE ProductName=@ProductName
> END
насколь я понял тут основной трабл?
for
SELECT DISTINCT(ProductName), SUM(Discount) as Discount from Outbound GROUP BY ProductName
into :ProductName, :Discount
do begin
UPDATE Results SET Quantity=Quantity-:Discount WHERE ProductName=:ProductName;
end;
HMT (2004-08-17 10:38:00) [6]Может курсор здесь лишний ?
Чем можно заменить fetch_status?