Выполнение моей SQL-группы приводит к таблице ниже. Из этой таблицы мне нужно вычесть Qty с кодом = 'S' из Qty с кодом = 'B', когда цена и дата совпадают.SQL-запрос - db2/400 iseries
Например, в приведенной ниже таблице мне нужно значение, которое нужно сохранить в рабочей переменной.
1) 100-50 = 50 в течение первых 2-х строк
2) 60 -30 = 30 для 3-й и 4-й строки
3) В последней строке, так как он не имеет код 'S', он должен возвращать только 20
Таблица
Price Date Code Sum(Qty)
9.0 201512 B 100
9.0 201512 S 50
8.0 201506 B 60
6.0 201506 S 30
5.0 201508 B 20
SQL запрос, используемый для получения приведенной выше таблицы
select Price, Date, Code,sum(Qty) from Table
where Type = 'A' and Acct = 'CLOSED'
group by Price,Date,Code
order by Price,Date
Могу ли я изменить мой существующий оператор SQL, указанный выше, с использованием операторов CASE для получения моего требуемого результата. Я пробовал, но Cursor возвращает один на один ряд и СЛУЧАЙ, кажется, не работает
exec sql
declare c1 cursor for
select Price, Date, Code,
Case when Code ='B' then ifnull(sum(Qty),0)
when Code ='S' then (-1 * ifnull(sum(Qty),0)) end
from Table
where Type = 'A' and Acct = 'CLOSED'
group by Price,Date,Code
order by Price,Date
exec sql
open c1
exec sql
fetch c1 into :var_price, :var_date, :var_code, :var_Bqty, :VarSqty
Использование SQLRPGLE в системе ISeries.
Спасибо you..It работал отлично. – Peck