2013-02-28 92 views
1

我有一個表,其中有兩列,一個是日期時間列(Test_Complete),另一個是字母數字記錄標識列(RecordID)。需要計算SQL查詢總數的百分比

我需要準備每月處理的recordID的數量。我已經爲此創建了一個查詢。

SELECT (Format([Test_Complete],"mmm"" '""yy")) AS Evaluation_Month, 
Count(tbl_TestStatus.Record_ID) AS CountOfRecord_ID 
FROM tbl_TestStatus 
WHERE (((tbl_TestStatus.[Test_Complete]) Is Not Null)) 
GROUP BY (Format([Test_Complete],"mmm"" '""yy")), 
(Year([Test_Complete])*12+Month([Test_Complete])-1); 

此查詢工作得很好,給了我這樣的輸出:

Evaluation_Month  CountOfRecord_ID 
------------------ ----------------- 
Jan'12     20 
Feb'12     90 
Mar'12     40 
Apr'12     50 

現在我需要的是計算對每個Evaluation_Month CountOfRecord_ID值的百分比,並與Evaluation_Month數據值追加百分比。

在上面的結果集,所有的CountOfRecord_ID的總和是200這樣的比例需要計算考慮200爲100%,這樣,我的結果是這樣的:

Evaluation_Month  CountOfRecord_ID 
------------------ ----------------- 
Jan'12 (10%)    20 
Feb'12 (45%)    90 
Mar'12 (20%)    40 
Apr'12 (25%)    50 

如何修改我的SQL查詢來實現這一目標?

+2

那麼,sql服務器還是ms訪問? – 2013-02-28 06:14:22

+0

語法在我看來像Access。我對嗎? – Barranka 2013-02-28 06:15:09

+0

是的,這是MS-Access,在SQL Server中使用它之前,我試圖在一個小型訪問數據庫中進行一些研發,因爲SQL服務器表尚未準備好:) – 2013-02-28 06:19:45

回答

3

您只需要在select語句中添加一個「子查詢字段」,其中包含記錄總數。這樣的事情:

SELECT 
    (Format([Test_Complete],"mmm"" '""yy")) AS Evaluation_Month, 
    Count(tbl_TestStatus.Record_ID) AS CountOfRecord_ID, 
    Count(tbl_TestStatus.Record_ID)/(select count(tbl_testStatus.recordId 
    from tbl_testStatus 
    where tbl_testStatus.test_complete is not null) as percent 
FROM 
    tbl_TestStatus 
WHERE 
    (((tbl_TestStatus.[Test_Complete]) Is Not Null)) 
GROUP BY 
    (Format([Test_Complete],"mmm"" '""yy")), 
    (Year([Test_Complete])*12+Month([Test_Complete])-1); 
+0

This works!雖然除法結果需要乘以100.非常感謝。 – 2013-02-28 06:29:01

+0

重要的是,現在你知道如何對待這種事情。請記住:字段**中的子查詢必須只返回一行和一列。 – Barranka 2013-02-28 16:52:40