2017-09-04 122 views
1

我試圖建立在Microsoft Access,做以下計數在Microsoft Access交叉表查詢

交叉表查詢開始數據顯示

Segment | Customer ID 

10  | 5 

12  | 5 

11  | 5 

11  | 7 

10  | 10 

12  | 10 

輸出

 10 | 11 | 12 

10  2 | 1 | 2 

11  1 | 2 | 1 

12  2 | 1 | 2 

基本上我試圖顯示任何時候細分計數兩個單獨的細分受衆羣的客戶ID是相同的。例如,customerID 5跨段10 & 12共享,而客戶ID 10跨段10 & 12等交叉表上共享12它顯示2(兩個段中的所有客戶的數量10 12 12)。

任何幫助你將不勝感激。

回答

1

這需要在CustomerID列上進行自加入。這個問題沒有明確指出來源,所以我把它稱爲CS。自連接與其他連接沒有區別,只有該別名是必需的,以便可以分別引用同一個源的不同實例。這裏的別名是CS1CS2

TRANSFORM Count(CS1.CustomerID) AS CountOfCustomerID 
SELECT CS1.Segment 
FROM CS AS CS1 INNER JOIN CS AS CS2 ON CS1.CustomerID = CS2.CustomerID 
GROUP BY CS1.Segment 
ORDER BY CS1.Segment, CS2.Segment 
PIVOT CS2.Segment; 

雖然在這種情況下,可以定義在單個SELECT語句作爲交叉表查詢的一部分,所有必要的連接,它往往是啓發分別查看選擇的結果,而不變換。換句話說,我建議檢查

SELECT CS1.Segment AS Segment1, CS2.Segment AS Segment2, CS1.CustomerID AS CustomerID 
FROM CS AS CS1 INNER JOIN CS AS CS2 ON CS1.CustomerID = CS2.CustomerID 
ORDER BY CS1.Segment, CS2.Segment, CS1.CustomerID; 

研究這個查詢的結果 - 並且是自覺加入的 - 在未來起草類似的查詢會希望幫助。