Tóm Tắt
Thực hiện tính toán tích lũy trong SQL
Trang Cập Nhật : 29 Tháng Năm 2022
Ngày tạo trang : 14 Tháng Chín 2020
Ngày tạo trang :
Tweet
tóm tắt
Giá trị tích lũy của số tiền trong đơn vị tháng năm được tính bằng SQL.
Phiên bản kiểm tra hoạt động
Phiên bản SQL Server được hỗ trợ
- 2005
- 2008
- 2008 R2
Kiểm tra Phiên bản SQL Server
- 2005
- 2008
- 2008 R2
Phiên bản Windows đã được thử nghiệm
- 2008
- 2008 R2
chất
Thông thường, khi sử dụng cơ sở dữ liệu, số tiền thường được tính cho năm và tháng được chỉ định, nhưng cũng có những trường hợp số tiền của tháng này được thêm vào dựa trên dữ liệu của tháng trước như số tiền và hàng tồn kho. Bạn có thể tính toán các giá trị tích lũy được lưu trữ hoặc lập trình, nhưng hiện tại tôi chỉ muốn thực hiện tính toán trong SQL.
Có một bảng dưới đây, với số tiền được đặt cho mỗi năm và tháng:
Số tiền tích lũy năm tích lũy số tiền lũy kế của năm
201004
100
không
không
201005
200
không
không
201006
150
không
không
201007
300
không
không
201008
50
không
không
201009
220
không
không
201010
240
không
không
201011
280
không
không
201012
400
không
không
201101
450
không
không
201102
520
không
không
201103
120
không
không
201104
140
không
không
201105
450
không
không
201106
270
không
không
201107
640
không
không
201108
340
không
không
201109
230
không
không
201110
280
không
không
201111
320
không
không
201112
350
không
không
201201
230
không
không
201202
270
không
không
201203
350
không
không
Để cập nhật theo lô trong SQL, thay vì sử dụng “số tiền của tháng trước” làm “số tiền của tháng trước”, bạn có thể tính giá trị tích lũy bằng cách đính kèm điều kiện là số tiền trong quá khứ được tổng hợp từ năm mục tiêu và tháng.
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.年月
Khi bạn thực thi SQL ở trên, giá trị tích lũy được nhập vào “Tích lũy số tiền”.
Số tiền tích lũy năm tích lũy số tiền lũy kế của năm
201004
100
100
không
201005
200
300
không
201006
150
450
không
201007
300
750
không
201008
50
800
không
201009
220
1020
không
201010
240
1260
không
201011
280
1540
không
201012
400
1940
không
201101
450
2390
không
201102
520
2910
không
201103
120
3030
không
201104
140
3170
không
201105
450
3620
không
201106
270
3890
không
201107
640
4530
không
201108
340
4870
không
201109
230
5100
không
201110
280
5380
không
201111
320
5700
không
201112
350
6050
không
201201
230
6280
không
201202
270
6550
không
201203
350
6900
không
Ngoài ra, nếu bạn muốn đặt lại giá trị tích lũy hàng năm, bạn có thể tính toán nó bằng cách thay đổi biểu thức có điều kiện.
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.年月
Khi bạn thực hiện SQL trên, giá trị tích lũy được nhập vào “Tích lũy số tiền hàng năm”.
Số tiền tích lũy năm tích lũy số tiền lũy kế của năm
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