Ms Sql Računanje razlike

poruka: 5
|
čitano: 310
|
moderatori: Danny_HR, Lazarus Long, XXX-Man
1
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
offline
Ms Sql Računanje razlike za neznalice

Ne znam pa pitam... U tablici prihoda i rashoda troškova organiziranoj po mjesecima i vrstama troška moram izračunati kumulativni prihod i kumulativni rashod unutar mjeseca. Nov sam u tome, ali netko sigurno zna kako da to napravim. Hvala!

 
0 0 hvala 0
6 godina
offline
Re: Ms Sql Računanje razlike za neznalice

Treba ti SELECT OVER clause u obliku drugog upita iz primjera za kumulativni total.

 

SQL Fiddle za MSSQL ne radi ovih dana pa evo code snippeta

 

create table tbl(mjesec int, vrsta char(1), prihod int, rashod int)

insert into tbl(mjesec, vrsta, prihod, rashod)
values (1, 'A', 10000, 20000),
    (1, 'A', 1000, 2000),
    (2, 'A', 100, 200),
    (2, 'B', 10, 20),
    (3, 'C', 1, 2)

select mjesec,
    sum(sum_prihod) over (order by mjesec) as kumulativ_prihod,
    sum(sum_rashod) over (order by mjesec) as kumulativ_rashod
from (
    select mjesec, sum(prihod) as sum_prihod, sum(rashod) as sum_rashod
    from tbl
    group by mjesec
) as kumulativ
order by mjesec

 

Rezultat:

 

mjesec   kumulativ_prihod   kumulativ_rashod
--------------------------------------------
1      11000              22000
2        11110              22220
3        11111         22222

 

8 godina
offline
Re: Ms Sql Računanje razlike za neznalice

Prvo hvala na pomoći. Očito se tu ima još mnogo za učiti. Pokušao sam prilagoditi primjer onom što meni treba ... ali ne ide.
Ovo je par linija naredbi na temelju tvog primjera gdje pitam da se za sada izračuna samo prihod. Napominjem prihod i rashod se pohranjuju u jednoj koloni a na temelju kategorije (u posebnoj koloni) se određuje o kakvoj transakciji je riječ.

select month(Date), sum(Amount) over (order by month(Date))
from (
     select month(Date), sum(Amount) as Prihod
     from Tsve
     group by month(Date)
     )
order by month(Date)

MsSql mi vrača komentar: Incorrect syntax near the keyword 'order'.

Eto to je to. Ako imaš još neku sugestiju bila bi mi od velike pomoći.

6 godina
offline
Re: Ms Sql Računanje razlike za neznalice

Tu grešku dobiješ jer derivirana tablica mora imati alias (maknuo si "as kumulativ" iz mojeg posta).

 

To nije jedina greška

    * calculated stupac derivirane tablice month(Date) mora imati ime

    * glavni upit treba koristiti nazive stupaca derivirane, a ne izvorne tablice

 

create table Tsve(Date datetime, Amount int)

insert into Tsve(Date, Amount)
values ('2018-01-01', 10000),
    ('2018-01-01', 1000),
    ('2018-02-01', 100),
    ('2018-02-02', 10),
    ('2018-03-01', 1)

select mjesec, sum(Prihod) over (order by mjesec)
from (
     select month(Date) as mjesec, sum(Amount) as Prihod
     from Tsve
     group by month(Date)
     ) as kumulativ
order by mjesec

8 godina
offline
Re: Ms Sql Računanje razlike za neznalice

Hvala na brzoj pomoći, jednako toliko na poduci. Trenutno se bavim neodgodivim stvarima, ali ću svakako tvoju uputu primjeniti što prije. Zanima me rad sa Ms Sql bazom, ali vidim da tome treba posvetiti još mnogo vremena i učenja.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice