2011年3月27日 星期日

年度各月銷售紀錄與累計紀錄

三.年度各月銷售紀錄與累計紀錄
銷售額 累計
一月 1200 1200
二月 1300 2500
三月 1000 3500
四月 3500 7000
...
..
.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


首先建立一個範例Table(Java2)
CREATE TABLE Java2(
nRecIdn [int] IDENTITY (1, 1) NOT NULL ,
cMonth [char] (2) NOT NULL ,
nInvoiceAmt [int] NOT NULL
)
塞值...
nRecIdn nMonth nInvoiceAmt
1   01   10
2   02   20
3   03   30
4   04   40
5   05   0
6   06   33
7   07   22
8   08   12
9   09   13
10   10   99
11   11   100
12   12   200   SELECT
cMonthAS MONTH
,nInvoiceAmt AS MONTHLY
,( SELECT
SUM(Java2_B.nInvoiceAmt) AS CUMULATIVE
FROM Java2 AS Java2 _B
WHERE Java2_B.cMonth<= Java2_A.cMonth
)
FROM
Java2 AS Java2_A
GROUP BY cMonth,nInvoiceAmt
ORDER BY cMonth




其實觀念很簡單,大家看了應該就會清楚...


不過還是要強調一點,當資料量多的時候還是需要去評量到底是要在SQL上處理,還是要將資料抓到前端之後再處理...


還有,這是一個範例table,所以日期欄位(cMonth)我使用了char,不過我還是強烈的覺得日期欄位還是用datetime的Data Type(西元年)會是最好的選擇!!!!


我沒有統獨情結喔!!!(最近民國年改制為西元年的話題...Big Smile)

沒有留言: