2017-01-20 7 views
1

Итак, у меня есть одна таблица с 4 полями = первая - дата, вторая - первый баланс, третий - мутации, 4 - конечный баланс.Функция агрегирования SQL из одной таблицы

следующие изображения имеют 2 таблицы, первые таблицы - это исходные таблицы, я должен делать запросы, чтобы они могли отображаться как вторая таблица.

* SALDO AWAL получает вчера данные SALDO PENUTUPAN

* SALDO PENUTUPAN является получение данных из SALDO AWAL + MUTASI

И так далее, пока данные выглядят как вторая таблица

enter image description here

UPDATE TRANSAKSI SET SALDO_AWAL = (SELECT t2.SALDO_PENUTUPAN 
       FROM TRANSAKSI t2 
       WHERE t2.TANGGAL = '2015-10-10')where TANGGAL > '2015-10-10' 

ВЫШЕ мой пример кода, но я думаю, что это не сработало, так что мне нужно у парней помочь, Спасибо

+0

Есть ли столбец идентификатора в таблице? уникально ли? Кроме того, вам нужно обновить таблицу или просто запросить данные по-второму? – GurV

+0

Нет идентификатора, только одна таблица с 4 полями, запрашивает данные с помощью оператора UPDATE –

+0

является уникальным столбцом tanggal? – GurV

ответ

1

Учитывая tanggal является уникальным, вы можете использовать это:

with cte(tanggal, saldo_awal, mutasi, saldo_penutupan) as (
    select 
     tanggal, 
     lag(saldo_penutupan, 1, 0) over (order by tanggal) saldo_awal, 
     mutasi, 
     saldo_penutupan 
    from (
     select 
      tanggal, 
      mutasi, 
      sum(mutasi) over (order by tanggal) saldo_penutupan 
     from TRANSAKSI 
    ) t 
) 
update t1 
set t1.saldo_awal  = t2.saldo_awal, 
    t1.saldo_penutupan = t2.saldo_penutupan 
from TRANSAKSI t1 join cte t2 
on t1.tanggal = t2.tanggal 
+0

wow !!! Великий !!!. как ты можешь быть таким умным ???? БОЛЬШОЕ СПАСИБО !!!! это сработало! thx XD –