Εκτέλεση αθροιστικών υπολογισμών σε SQL

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

περίληψη

Η αθροιστική τιμή του ποσού σε μονάδες μήνα υπολογίζεται με χρήση SQL.

Έκδοση ελέγχου λειτουργίας

Υποστηριζόμενες εκδόσεις του SQL Server

  • 2005
  • 2008
  • 2008 R2

Έλεγχος έκδοσης του SQL Server

  • 2005
  • 2008
  • 2008 R2

Δοκιμασμένη έκδοση των Windows

  • 2008
  • 2008 R2

ουσία

Κανονικά, όταν χρησιμοποιείτε μια βάση δεδομένων, το ποσό των χρημάτων υπολογίζεται συχνά για το συγκεκριμένο έτος και μήνα, αλλά υπάρχουν επίσης περιπτώσεις όπου το ποσό αυτού του μήνα προστίθεται με βάση τα δεδομένα του προηγούμενου μήνα, όπως το ποσό και το απόθεμα. Μπορείτε να υπολογίσετε αθροιστικές τιμές αποθηκευμένες ή προγραμματικά, αλλά προς το παρόν θέλω να κάνω τον υπολογισμό μόνο σε SQL.

Υπάρχει ένας παρακάτω πίνακας, με τα ποσά που καθορίζονται για κάθε έτος και μήνα:

μονάδας
Αθροιστικό ποσό ετήσιαςποσού έτους
201004 100 άκυρος άκυρος
201005 200 άκυρος άκυρος
201006 150 άκυρος άκυρος
201007 300 άκυρος άκυρος
201008 50 άκυρος άκυρος
201009 220 άκυρος άκυρος
201010 240 άκυρος άκυρος
201011 280 άκυρος άκυρος
201012 400 άκυρος άκυρος
201101 450 άκυρος άκυρος
201102 520 άκυρος άκυρος
201103 120 άκυρος άκυρος
201104 140 άκυρος άκυρος
201105 450 άκυρος άκυρος
201106 270 άκυρος άκυρος
201107 640 άκυρος άκυρος
201108 340 άκυρος άκυρος
201109 230 άκυρος άκυρος
201110 280 άκυρος άκυρος
201111 320 άκυρος άκυρος
201112 350 άκυρος άκυρος
201201 230 άκυρος άκυρος
201202 270 άκυρος άκυρος
201203 350 άκυρος άκυρος

Για να ενημερώσετε σε μια παρτίδα σε SQL, αντί να χρησιμοποιήσετε "το ποσό του προηγούμενου μήνα" ως "το ποσό του προηγούμενου μήνα", μπορείτε να υπολογίσετε την αθροιστική τιμή επισυνάπτοντας τη συνθήκη ότι το προηγούμενο ποσό συγκεντρώνεται από το έτος-στόχο και το μήνα.

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.年月

Όταν εκτελείτε την παραπάνω SQL, η αθροιστική τιμή εισάγεται στο "Αθροιστικό ποσό".

μονάδας
Αθροιστικό ποσό ετήσιαςποσού έτους
201004 100 100 άκυρος
201005 200 300 άκυρος
201006 150 450 άκυρος
201007 300 750 άκυρος
201008 50 800 άκυρος
201009 220 1020 άκυρος
201010 240 1260 άκυρος
201011 280 1540 άκυρος
201012 400 1940 άκυρος
201101 450 2390 άκυρος
201102 520 2910 άκυρος
201103 120 3030 άκυρος
201104 140 3170 άκυρος
201105 450 3620 άκυρος
201106 270 3890 άκυρος
201107 640 4530 άκυρος
201108 340 4870 άκυρος
201109 230 5100 άκυρος
201110 280 5380 άκυρος
201111 320 5700 άκυρος
201112 350 6050 άκυρος
201201 230 6280 άκυρος
201202 270 6550 άκυρος
201203 350 6900 άκυρος

Επιπλέον, εάν θέλετε να επαναφέρετε την αθροιστική τιμή κάθε χρόνο, μπορείτε να την υπολογίσετε αλλάζοντας την παράσταση υπό όρους.

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.年月

Όταν εκτελείτε την παραπάνω SQL, η αθροιστική τιμή εισάγεται στο "Αθροιστικό Ετήσιο Ποσό".

μονάδας
Αθροιστικό ποσό ετήσιαςποσού έτους
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