ACCESS設定查詢數量

假設我現在有2000筆資料

資料中有分A、B、C三個群體

假設A有1000筆

B有600筆

C有400筆

那現在我想要

在A群中找出50%的資料

在B群中找出30%的資料

在C群中找出20%的資料

也就是說只要找出500+180+80=760筆

唯一的條件就是

這些資料有照金額大小排序

然後從最大的開始取出

那在ACCESS中該如何做

謝謝大家的解答

謝謝

Update:

不好意思

我再將需求說明白一點

首先

我的資料有上萬筆

然後我會根據一些條件查詢

先假設查詢出來的只有2000筆

然後我要在這查詢出來的2000筆中

再進一步的查出固定%數的資料

所以我的檔案

會有一個資料表(10000筆)

然後有兩個查詢表

一個查詢表示第一次查詢的資料(2000筆)

另一個查詢表是第二次查詢的資料(760筆)

麻煩大家了

謝謝

flash40所說的方式我還是不知道該如何寫進去

我該如何去控制查詢的資料??

Update 2:

TOP這個方法我有試過了

但是如果他碰到相同金額的值

他就會把相同金額的值都顯示出來

例如

我有100筆資料

要顯示前5%,也就是前5個

那假如我第5~第10的資料的金額都是一樣的

那他就會一次顯示出10筆資料

而不是我設想的5筆

這該如何解決呢?

另外

我在ABC各群中

還有再劃分為S跟J兩群

就是說A群中,有再分S群跟J群

那我要顯示前X%的資料

我能不能設定成先搜尋S群的

S群的資料量不夠的話再搜尋J群的

3 Answers

Rating
  • Abear
    Lv 6
    9 years ago
    Favorite Answer

    找出A群組金額前50%的語法為

    SELECT TOP 50 PERCENT 原始資料表.群體, 原始資料表.金額

    FROM 原始資料表

    WHERE (((原始資料表.群體)="A"))

    ORDER BY 原始資料表.金額 DESC

    依此類推,

    將A,B,C群組查詢聯集即可..

    SELECT TOP 50 PERCENT 原始資料表.群體, 原始資料表.金額

    FROM 原始資料表

    WHERE (((原始資料表.群體)="A"))

    ORDER BY 原始資料表.金額 DESC

    UNION

    SELECT TOP 30 PERCENT 原始資料表.群體, 原始資料表.金額

    FROM 原始資料表

    WHERE (((原始資料表.群體)="B"))

    ORDER BY 原始資料表.金額 DESC

    UNION

    SELECT TOP 20 PERCENT 原始資料表.群體, 原始資料表.金額

    FROM 原始資料表

    WHERE (((原始資料表.群體)="C"))

    ORDER BY 原始資料表.金額 DESC

    ;

  • 9 years ago

    1_請將檔案上傳

    2_請大略說明作業模式需求.

    2.1_是查詢__或是表單模式.

    3_是否如樓上大大_直接使用一個資料表

    每次先刪除_然後再將篩選資料_再次逐一新增的作法.

    以上___

  • 9 years ago

    用 FOR NEXT一筆一筆抓到另一個資料表就可以了吧

    先按金額大小排序

    R=資料筆數*0.5

    FOR I = 1 TO R

    A=金額

    INSERT INTO 資料表名稱 (欄位名稱=A)

    NEXT

    R=資料筆數*0.3

    FOR I = 1 TO R

    NEXT

    R=資料筆數*0.2

    FOR I = 1 TO R

    NEXT

    大概就是這樣

Still have questions? Get your answers by asking now.