Kumulatiivisten laskutoimitusten suorittaminen SQL:ssä

Sivu päivitetty :
Sivun luontipäivämäärä :

yhteenveto

Summan kumulatiivinen arvo vuosikuukausina lasketaan SQL:n avulla.

Toiminnon tarkistuksen versio

Tuetut SQL Server -versiot

  • 2005
  • 2008
  • 2008 R2

Tarkista SQL Server -versio

  • 2005
  • 2008
  • 2008 R2

Testattu Windows-versio

  • 2008
  • 2008 R2

aine

Tavallisesti tietokantaa käytettäessä rahan määrä lasketaan usein määritetylle vuodelle ja kuukaudelle, mutta on myös tapauksia, joissa tämän kuukauden määrä lisätään edellisen kuukauden tietojen, kuten summan ja varaston, perusteella. Voit laskea tallennetut kumulatiiviset arvot tai ohjelmallisesti, mutta toistaiseksi haluan tehdä laskennan vain SQL:ssä.

Alla on taulukko, jossa on kullekin vuodelle ja kuukaudelle määritetyt summat:

Kumulatiivinen vuosi-kuukausisumma kumulatiivinen vuosiyksikkösumma kumulatiivinen
201004 100 nolla nolla
201005 200 nolla nolla
201006 150 nolla nolla
201007 300 nolla nolla
201008 50 nolla nolla
201009 220 nolla nolla
201010 240 nolla nolla
201011 280 nolla nolla
201012 400 nolla nolla
201101 450 nolla nolla
201102 520 nolla nolla
201103 120 nolla nolla
201104 140 nolla nolla
201105 450 nolla nolla
201106 270 nolla nolla
201107 640 nolla nolla
201108 340 nolla nolla
201109 230 nolla nolla
201110 280 nolla nolla
201111 320 nolla nolla
201112 350 nolla nolla
201201 230 nolla nolla
201202 270 nolla nolla
201203 350 nolla nolla

Jos haluat päivittää erän SQL:ssä, voit laskea kumulatiivisen arvon liittämällä siihen ehdon, että aiempi summa on koottu kohdevuodesta ja kuukaudesta sen sijaan, että käyttäisit "edellisen kuukauden summaa" "edellisen kuukauden summan" käyttämisen "edellisen kuukauden summan" käyttämiseksi "edellisen kuukauden summana".

update 金額集計Test
  set 金額累計 = 累計
from
(
  select
    A.年月,
    sum(B.金額) as 累計
  from 金額集計Test A
  left outer join 金額集計Test B
    on B.年月 <= A.年月
  group by A.年月
) as C
where 金額集計Test.年月 = C.年月

Kun suoritat yllä olevan SQL:n, kumulatiivinen arvo syötetään Kumulatiivinen summa -kohtaan.

Kumulatiivinen vuosi-kuukausisumma kumulatiivinen vuosiyksikkösumma kumulatiivinen
201004 100 100 nolla
201005 200 300 nolla
201006 150 450 nolla
201007 300 750 nolla
201008 50 800 nolla
201009 220 1020 nolla
201010 240 1260 nolla
201011 280 1540 nolla
201012 400 1940 nolla
201101 450 2390 nolla
201102 520 2910 nolla
201103 120 3030 nolla
201104 140 3170 nolla
201105 450 3620 nolla
201106 270 3890 nolla
201107 640 4530 nolla
201108 340 4870 nolla
201109 230 5100 nolla
201110 280 5380 nolla
201111 320 5700 nolla
201112 350 6050 nolla
201201 230 6280 nolla
201202 270 6550 nolla
201203 350 6900 nolla

Lisäksi, jos haluat nollata kumulatiivisen arvon joka vuosi, voit laskea sen muuttamalla ehdollista lauseketta.

update 金額集計Test
  set 年度単位金額累計 = 累計
from
(
select
  A.年月,
  sum(B.金額) as 累計
from 金額集計Test A
left outer join 金額集計Test B
  on B.年月 <= A.年月
  and B.年月 >= case
                  when cast(right(A.年月, 2) as int) >= 4 then left(A.年月, 4) + N'04'
                  else cast(cast(left(A.年月, 4) as int) - 1 as nvarchar(4)) + N'04'
                end
group by A.年月
) as C
where 金額集計Test.年月 = C.年月

Kun suoritat yllä olevan SQL:n, kumulatiivinen arvo syötetään "Annual Amount Cumulative" -kohtaan.

Kumulatiivinen vuosi-kuukausisumma kumulatiivinen vuosiyksikkösumma kumulatiivinen
201004 100 100 100
201005 200 300 300
201006 150 450 450
201007 300 750 750
201008 50 800 800
201009 220 1020 1020
201010 240 1260 1260
201011 280 1540 1540
201012 400 1940 1940
201101 450 2390 2390
201102 520 2910 2910
201103 120 3030 3030
201104 140 3170 140
201105 450 3620 590
201106 270 3890 860
201107 640 4530 1500
201108 340 4870 1840
201109 230 5100 2070
201110 280 5380 2350
201111 320 5700 2670
201112 350 6050 3020
201201 230 6280 3250
201202 270 6550 3520
201203 350 6900 3870