2014-02-14 42 views
1

我無法概念化如何完全使用SQL。訪問SQL - 在組中找到每行10行並找到剩餘行

說我有一個查詢,很可能是在解決這一問題所產生的子查詢:

Color  | Count 
Brown  | 25 
Yellow | 5 
Blue  | 35 

使用上面的結果集,我想用下面的查詢:

Color 
Brown 
Brown 
Brown 
Yellow 
Blue 
Blue 
Blue 
Blue 

另一種解決辦法是採取計及這樣做:

SELECT -Int((-Count(*)/10)) AS Expr1, Color 
FROM ColorTable 
group by test.Source_City 

其中,使用上面的數據會產生:

Color  | Count 
Brown  | 3 
Yellow | 1 
Blue  | 4 

對此的解決辦法是採取計數,寫一排各1

+0

這是Access中真正的痛苦。有沒有其他數據庫可以使用? –

+0

不幸的是,這是一張本地餐桌。 – Elias

+0

沒有上限。在我的數據集中,有一個計數超過1000的「顏色」。此查詢將用於在報告中設置頁碼。 – Elias

回答

2

因此,我們必須在一個名爲表我們的測試數據[ InitialCounts]

Color Count 
------ ----- 
Blue  35 
Brown  25 
Yellow  5 

和 「號碼錶」 命名[編號]含有

n 
---- 
    1 
    2 
    3 
... 
9999 

(或者根據我們預計爲每種顏色獲得的最大行數,根據需要走高)。

查詢

SELECT 
    Color, 
    Int(CDbl(Count)/10 + 0.5) AS NewCount 
FROM InitialCounts 

回報

Color NewCount 
------ -------- 
Blue   4 
Brown   3 
Yellow   1 

,如果我們希望爲每個顏色重複行,我們就可以做

SELECT NewCounts.Color 
FROM 
    Numbers, 
    (
     SELECT 
      Color, 
      Int(CDbl(Count)/10 + 0.5) AS NewCount 
     FROM InitialCounts 
    ) AS NewCounts 
WHERE Numbers.n <= NewCounts.NewCount 
ORDER BY NewCounts.Color 

返回

Color 
------ 
Blue 
Blue 
Blue 
Blue 
Brown 
Brown 
Brown 
Yellow 
+0

我喜歡你所擁有的,但NewCount字段中的Count是什麼 – Elias

+0

@Elias這些數字與你問題的最後一個樣本表中的數字是一樣的,不是嗎? –

+0

我只是不確定Count是什麼,但現在我明白了。感謝您的幫助,我在這個問題上打了太久的頭。 – Elias