Access911.net   |   a9BBS   |   OTaA System  
  搜索文章︰  
Access911歡迎您光臨  
   主頁      上傳      简体版       論壇     
設為首頁  |  加入收藏   
  
你現在的位置︰文章索引 -> 文章分類 -> 函數  
 首頁|  近日更新|  下載  |  文章索引  |  搜索|  朮語|  承接工程|  
 
系統正在加載內容,請耐心等待...
 
 查詢
 窗体
 報表
 
 
 VBA
 函數
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 發布
 OA
 ASP/ASP.NET
 其他語言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用軟件
 參考文檔
 業主作品
 网友大作
 
 
友情鏈接
 access911.net
 
訪問人次
 1702086
 
站長 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 訂閱

顯示附加信息 >>>

關于 Partition 函數在分組查詢中的應用

作者︰海里先生(cg1重寫版)  摘自︰access911.net  ︰cg1  更新日期︰2005-8-25  瀏覽人次︰

 

關于 Partition 函數在分組查詢中的應用《函數》

看到很多朋友在Access進行分組統計查詢時,常常用嵌套多層IIF函數來得到分組區間標志,如設表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函數嵌套,極易出錯。另外如果分組區間進一步細化,更加多層嵌套的IIF函數會讓人有“亂花漸欲迷人眼”的感覺,出錯的概率進一步增大。
現在我們用 Partition 函數重寫一下︰
Select Partition(Age,0,69,10) As Range, Count(Age) As Count From表A Group By Partition(Age,0,69,10)


代碼相對簡單很多,不過上述函數只适用于純 ACCESS 環境

    新手來看︰Access的特點、概念。什么是純 ACCESS 環境?《其他》
    http://access911.net/index.asp?uec=bg&u1=a&u2=79FAB51E12DC


以下是 Partition 的幫助

Partition 函數

 

返回一個 Variant (String),指定一個范圍,在一系列計算的范圍中指定的數字出現在這個范圍內。

語法

Partition(number, start, stop, interval)

Partition 函數的語法含有下面這些命名參數

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

說明

Partition 函數會標識 number 值出現的特定范圍,并返回一個 Variant (String) 來描述這個范圍。Partition 函數在查詢中是最有用的。可以創建一個選擇查詢顯示有多少定單落在几個變化的范圍內,例如,定單數從 1 到 1000、1001 到 2000,以此類推。

下面的表格使用三組 startstop 以及 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 所定義的數值范圍不能以 interval 來均分。所以,即使 interval 是 20,最後一個范圍也只能擴展到stop(11 個數)。

如果需要的話,Partition 會在返回的范圍中加上足夠的空白,以便讓返回值在冒號的左右兩側有相同的字符數,其值就是 stop 中的字符數再加一。如此可确保當要使用 Partition 与其它的數值作運算時,所得的字符串,可以在之後的排序操作中得到正确的結果。

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

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

 

 
相關文章
     沒有手動相關文章
 
評論
     查看或發表更多的評論,請單擊這里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期︰2000年4月2日  |  設計施工︰陳格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陳格 保留所有權利