會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當(dāng)前位置:主頁 > 技巧 > Access技巧 > 模塊函數(shù)VBA > 正文

關(guān)于 Partition 函數(shù)在分組查詢中的應(yīng)用

時間:2014-11-17 13:06 來源:access911.net 作者:海里先生… 閱讀:

關(guān)于 Partition 函數(shù)在分組查詢中的應(yīng)用《函數(shù)》

看到很多朋友在access進行分組統(tǒng)計查詢時,常常用嵌套多層IIF函數(shù)來得到分組區(qū)間標(biāo)志,如設(shè)表A有Age這樣一個字段,一般朋友會采用如下的查詢語句:


Select
IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70:  "))))) As Range,
Count (1) As Count
From 表A
Group By
IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70:  ")))))


不但語句冗長,而且由于多層IIF函數(shù)嵌套,極易出錯。另外如果分組區(qū)間進一步細(xì)化,更加多層嵌套的IIF函數(shù)會讓人有“亂花漸欲迷人眼”的感覺,出錯的概率進一步增大。
現(xiàn)在我們用 Partition 函數(shù)重寫一下:
Select Partition(Age,0,69,10) As Range, Count(Age) As Count From表A Group By Partition(Age,0,69,10)


代碼相對簡單很多,不過上述函數(shù)只適用于純 access 環(huán)境

以下是 Partition 的幫助


 

Partition 函數(shù)

 

返回一個 Variant (String),指定一個范圍,在一系列計算的范圍中指定的數(shù)字出現(xiàn)在這個范圍內(nèi)。

語法

Partition(number, start, stop, interval)

 

Partition 函數(shù)的語法含有下面這些命名參數(shù)

部分 描述
number 必要參數(shù)。整數(shù),在所有范圍中判斷這個整數(shù)是否出現(xiàn)。
start 必要參數(shù)。整數(shù),數(shù)值范圍的開始值,這個數(shù)值不能小于 0。
stop 必要參數(shù)。整數(shù),數(shù)值范圍的結(jié)束值,這個數(shù)值不能等于或小于 start。

 

說明

Partition 函數(shù)會標(biāo)識 number 值出現(xiàn)的特定范圍,并返回一個 Variant (String) 來描述這個范圍。Partition 函數(shù)在查詢中是最有用的?梢詣(chuàng)建一個選擇查詢顯示有多少定單落在幾個變化的范圍內(nèi),例如,定單數(shù)從 1 到 1000、1001 到 2000,以此類推。

下面的表格使用三組 start,stop 以及 interval 部分,來顯示怎樣決定這個范圍。第一個范圍和最后一個范圍兩列顯示 Partition 的返回值,此范圍的低端 (lowervalue) 和高端 (uppervalue) 是以冒號分開的。

start stop interval 第一個范圍之前 第一個范圍 最后一個范圍 最后一個范圍之后
0 99 5 " :-1" " 0: 4" " 95: 99" " 100: "
20 199 10 " : 19" " 20: 29" " 190: 199" " 200: "
100 1010 20 " : 99" " 100: 119" " 1000: 1010" " 1011: "

 

從上面的表格中得知,在第三行中,由 startstop 所定義的數(shù)值范圍不能以 interval 來均分。所以,即使 interval 是 20,最后一個范圍也只能擴展到stop(11 個數(shù))。

如果需要的話,Partition 會在返回的范圍中加上足夠的空白,以便讓返回值在冒號的左右兩側(cè)有相同的字符數(shù),其值就是 stop 中的字符數(shù)再加一。如此可確保當(dāng)要使用 Partition 與其它的數(shù)值作運算時,所得的字符串,可以在之后的排序操作中得到正確的結(jié)果。

如果 interval 是 1,則范圍便是 number:number,而不管 startstop 參數(shù)如何。比如說,如果 interval 是 1,number 是 100,而 stop 是 1000,則 Partition 會返回 " 100: 100"。

如果任何部分是 Null,則 Partition 會返回一個 Null

(責(zé)任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
評價: