由於您使用的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];
這似乎是它在一個二維數組上操作會更合適 – Patashu 2013-05-13 12:09:22
'Pivot'和'Transform'是你的朋友 – Yaroslav 2013-05-13 12:16:35