2016-07-19 80 views
1

我有一個訪問數據庫,其ID是指具有不同大小卡車的客戶。目前該表看起來是這樣的:微軟訪問計數每個ID的唯一值

id.....tire size 
1......30 
1......30 
1......31 
1......31 
2......32 

我想實現的是這樣的:

id.....30.....31.....32 
1......2......2......0 
2......0......0......0 

在刀刃特定的輪胎尺寸的出現和投入它的數量到各自的輪胎尺寸列。

+1

運行查詢助手交叉表查詢。 – Andre

回答

2

爲了顯示您寫入的數據,您需要執行交叉表查詢。下面的代碼應該達到你想要

TRANSFORM Nz(Count([YourTable].[Tire Size]),0) AS [CountOfTire Size] 
SELECT [YourTable].[ID] 
FROM [YourTable] 
GROUP BY [YourTable].[ID] 
PIVOT [YourTable].[Tire Size]; 
0

的第一步將是一個查詢,如:

select tire_size, COUNT(id) from mytable 
GROUP BY tire_size 

(我把查詢的「特殊魔法」部分以大寫字母強調。)

在MS-訪問查詢生成器,通過單擊一個看起來模糊不清的按鈕來訪問分組功能,如果我能夠正確記得,那麼該按鈕看起來就像是一個「E」(實際上是希臘字母「epsilon」),。這會向查詢構建器網格添加一個新的「分組」行。

這會產生(如你將很快看到的)輪胎尺寸的逐行結果和該輪胎尺寸的id的計數。

這可能有許多其他變化。閱讀MS-Access在線幫助,討論此功能:他們做了很好的工作。

其基本思想是GROUP BY條款:這說明每個不同的值tire_size形成一個「組」。 (是的,您可以多列一列,其中每個唯一的值組合組成一個組)。然後,指定所謂的「域集合函數」,例如COUNT(), AVG(), SUM(),以生成每個組的彙總統計信息。

每個GROUP BY列必須出現在SELECT子句中,然後在出現所有其他項目有必須是域聚合函數。(其中,如果你想想看,非常有意義...)

(幸運的是,MS-Access的查詢生成器在「隱藏」所有這些方面做得很好。 n交互式地構建分組查詢,這要感謝那個「epsilon」按鈕。但是,查看「SQL視圖」以查看它在SQL中的用途是很有用的。)

0

使用「GROUP BY」聚合

你需要像這樣的內容:

SELECT 
tyre_size, 
count(id) 
FROM tablename 
GROUP BY 
tire_size