2013-05-13 45 views
2

我在Access中創建了表,我想從中創建查詢。我要怎麼算值1多次在第一列發生了多少次值2出現在第2列等計數和表中的值的總和

ID Col1 Col2 Col3 Col4 
------------------------------- 
172 1 2 4 3 
172 3 2 4 1 
173 2 3 5 4 
173 2 1 3 4 

輸出(值出現的計數):

   1 2 3 4 5 6 7 8 
      ------------------------------ 
172 1st  1 0 1 0 0 0 0 0 
172 2nd  0 2 0 0 0 0 0 0 
172 3rd  0 0 0 2 0 0 0 0 
172 4th  1 0 1 0 0 0 0 0 
173 1st  0 2 0 0 0 0 0 0 
173 2nd  1 0 1 0 0 0 0 0 
173 3rd  0 0 1 1 1 0 0 0 
173 4th  0 0 0 1 0 0 0 0 
Total Count 3 2 4 3 1 0 0 0 
+0

這似乎是它在一個二維數組上操作會更合適 – Patashu 2013-05-13 12:09:22

+0

'Pivot'和'Transform'是你的朋友 – Yaroslav 2013-05-13 12:16:35

回答

0

由於您使用的MS-Access,您可以使用這樣的查詢:

TRANSFORM Count([s].[ID]) AS Counts 
SELECT [s].ID, [s].[tbl] 
FROM (
    SELECT ID, '1st' AS tbl, [1st] AS Val FROM yourtable 
    UNION ALL SELECT ID, '2st' AS tbl, [2nd] AS Val FROM yourtable 
    UNION ALL SELECT ID, '3st' AS tbl, [3rd] AS Val FROM yourtable 
    UNION ALL SELECT ID, '4st' AS tbl, [4th] AS Val FROM yourtable 

) AS [s] 
GROUP BY [s].ID, [s].[tbl] 
PIVOT [s].[Val]; 

如果你也想的總計,可以使用這一個:

TRANSFORM Count([s].[ID]) AS Counts 
SELECT [s].ID, [s].[tbl] 
FROM (SELECT * FROM (
    SELECT ID, '1st' AS tbl, [1st] AS Val FROM yourtable 
    UNION ALL SELECT ID, '2st' AS tbl, [2nd] AS Val FROM yourtable 
    UNION ALL SELECT ID, '3st' AS tbl, [3rd] AS Val FROM yourtable 
    UNION ALL SELECT ID, '4st' AS tbl, [4th] AS Val FROM yourtable) 
    UNION ALL 
    SELECT 999 AS ID, 'Total' AS tbl, Val FROM (
     SELECT ID, '1st' AS tbl, [1st] AS Val FROM yourtable 
    UNION SELECT ID, '2st' AS tbl, [2nd] AS Val FROM yourtable 
    UNION SELECT ID, '3st' AS tbl, [3rd] AS Val FROM yourtable 
    UNION SELECT ID, '4st' AS tbl, [4th] AS Val FROM yourtable) 
) AS [s] 
GROUP BY [s].ID, [s].[tbl] 
PIVOT [s].[Val]; 
+0

我得到了「Microsoft Access數據庫引擎無法識別'[1st]'作爲有效的字段名稱,實際上我使用了不同的字段名稱,但是我 – matley 2013-05-13 14:21:07

+0

我在Access 2010上測試過它,它的工作原理是什麼,你的表名和列的名稱是什麼? – fthiella 2013-05-13 14:53:05

+0

@ user2377055你是否將'yourtable'改爲表的實際名稱?那麼你需要改變''1st'AS tbl,[1st] AS Val'as''Column1'AS tbl,[Column1] AS Val'etc ... – fthiella 2013-05-13 15:22:54

-1

嘗試以下:

SELECT COUNT(DISTINCT 1st) 
     , COUNT(DISTINCT 2nd) 
     , COUNT(DISTINCT 3rd) 
     , COUNT(DISTINCT 4th) 
     , SUM(
      sum(COUNT(DISTINCT 1st)) 
      ,sum(COUNT(DISTINCT 2nd)) 
      ,sum(COUNT(DISTINCT 3rd)) 
      ,sum(COUNT(DISTINCT 4th)) 
     ) AS Total 
    FROM tableName 
GROUP BY  1st, 2nd, 3rd, 4th 

希望它的幫助。

+1

我得到了「在查詢表達式SUM中使用函數的參數數目錯誤(COUNT(DISTINCT(1st) ),COUNT(DISTINCT(第2次)),COUNT(DISTINCT(第3次)),COUNT(DISTINCT(4T h)) – matley 2013-05-13 12:35:38

+0

@ user2377055得到了錯誤,請通過編輯一個 – Freelancer 2013-05-13 12:38:58

+1

同樣的錯誤。我認爲DISTINCT(Fieldname)不支持訪問 – matley 2013-05-13 13:00:01