ОБНОВЛЕНИЕ Столбец таблицы с новой записью

Я работаю в Oracle APEX, и я хочу обновить столбец в отчете с новым значением в следующей таблице. Запрос отчета показан на следующей диаграмме, приведенной ниже.

TABLE  "VENDOR_ACCOUNT" 
(  "VEN_ACCOUNTID"      NVARCHAR2(10), 
   "VEN_REGNO"          NVARCHAR2(10), 
   "VEN_TXDATE"         DATE, 
   "VEN_INVOICE_REFNO"  NVARCHAR2(10), 
   "TOTALAMOUNT"        NVARCHAR2(10), 
   "IN"                 NUMBER(10,0), 
   "OUT"                NUMBER(10,0) 
) 

SELECT "VEN_ACCOUNTID" , 
       "VEN_REGNO" , 
       "VEN_TXDATE" , 
       "VEN_INVOICE_REFNO" , 
       "TOTALAMOUNT" , 
       "IN",
       "OUT",   
       "TOTALAMOUNT"+"IN" as "CREDIT",
       "TOTALAMOUNT"-"OUT" as "DEBIT"
FROM Vendor_Account;

Required Scenario: I want to update the TotalAmount Column with Debit and Credit. The new Debit or Credit value has to be shown in the TotalBalance column on the next record. enter image description here

9

2 ответы

Select
    "VEN_ACCOUNTID" , 
    "VEN_REGNO" , 
    "VEN_TXDATE" , 
    "VEN_INVOICE_REFNO" , 
    "TOTALAMOUNT" AS "OLD_TOTALAMOUNT"
    "TOTALAMOUNT" + nvl(lag (nvl("IN",0)-nvl("OUT",0)) 
                             over (partition by "VEN_REGNO" order by "VEN_ACCOUNTID" 
                             )
                        ,0) AS "TOTALAMOUNT"
    "IN",
    "OUT",  
 from Vendor_Account;
5
добавлено

Вы можете использовать аналитическую функцию Oracle LAG :

Select "VEN_ACCOUNTID" , 
        "VEN_REGNO" , 
        "VEN_TXDATE" , 
        "VEN_INVOICE_REFNO" , 
        "TOTALAMOUNT" , 
        "TOTALAMOUNT" + lag("IN",1) over (ORDER BY "VEN_ACCOUNTID")
                      - lag("OUT",1) over (ORDER BY "VEN_ACCOUNTID") AS "NEW_TOTALAMOUNT",
        "IN",
        "OUT",  
        "TOTALAMOUNT"+"IN" as "CREDIT",
        "TOTALAMOUNT"-"OUT" as "DEBIT"
FROM    Vendor_Account;
5
добавлено
@alen .. Он по-прежнему дает мне тот же ответ, что и я упоминал его на диаграмме выше .. никаких изменений не производится!
добавлено автор A4 Page, источник
Я сделал ... но все еще не работает
добавлено автор A4 Page, источник
@Tom .. Вот проблема «ORA-00923: ключевое слово FROM не найдено, где ожидалось». Я попытался поиграть с этим запросом, но все еще не работает. И вы можете легко понять проблему. Это хорошо объяснено диаграммами. Я хочу обновить итоговую сумму. Колонка должна быть обновлена ​​в следующей записи, если некоторые изменения сделаны в столбце DEBIT или CREDIT. Спасибо
добавлено автор A4 Page, источник
Проблема в том, что вы ожидаете обновления таблицы после этого? Если так, то Alens-запрос сам по себе этого не сделает - он просто вернет значения, необходимые для каждого запуска. Вам нужно будет изменить запрос (например, объединить его с обновлением), чтобы изменения вступили в силу
добавлено автор Sean Landsman, источник
@MuhammadUsman, что именно не работает? Когда я беру ваш результирующий набор из вашего вопроса и запускаю запрос Алена или Флорина на него, он дает мне то, что вы просите: totalamount + in предыдущей записи - из предыдущей записи. Так это ваш отчет, что «не работает» или запрос неполный? Если да, то ваш вопрос не предоставил достаточно деталей.
добавлено автор Tom, источник
Используйте функцию LAG. Поиграйте с ним и посмотрите, что он делает. Когда я написал запрос, вы должны получить новый столбец «new total» в отчете APEX.
добавлено автор Alen Oblak, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Oracle RU
Oracle RU
303 участник(ов)

Русскоязычная группа по Oracle. — Архитектура СУБД — PL/SQL — Оптимизация — Администрирование — Вакансии Oracle (указать инфу по вилке ЗП и удалёнке) Приглашайте коллег :-) Запрещены: личные оскорбления, обсуждения оффтопик вопросов политики и религии