你將需要使用交叉表作爲源的附加查詢。作爲特殊查詢的交叉表不允許除了整個聚合之外的旋轉值中的表達式。然而,在這樣做之前,添加Count(list_Breakages.Class_Cat)
作爲一個新的領域,其將作爲第二個查詢分母:
交叉表查詢
TRANSFORM Count(list_Breakages.Class_Cat) AS Cat
SELECT tbl_Bags.Bag_Company_ID, Format([Audit_PreVal_Date],"Short Date") AS Shift_Date,
Client_Parcels.Prelim_Size, Count(list_Breakages.Class_Cat) As TotalCatCount
FROM list_Breakages
INNER JOIN (tbl_Bags
INNER JOIN Client_Parcels ON tbl_Bags.Bag_ID = Client_Parcels.Bag_ID)
ON list_Breakages.Breakages_ID = Client_Parcels.Breakages
WHERE (((Client_Parcels.Prelim_Size) Is Not Null))
GROUP BY tbl_Bags.Bag_Company_ID, Format([Audit_PreVal_Date],"Short Date"),
Client_Parcels.Prelim_Size
PIVOT list_Breakages.Class_Cat;
PCT查詢
SELECT c.Bag_Company_ID, c.Shift_Date, c.Prelim_Size,
(c.[1 - Unbroken]/c.TotalCatCount) As c.[1-Unbroken_Pct],
(c.[2 - Chipped]/c.TotalCatCount) As c.[2-Chipped_Pct],
(c.[3 - Lightly Broken]/c.TotalCatCount) As c.[3-Lightly-Broken_Pct],
(c.[4 - Heavily Broken]/c.TotalCatCount) As c.[4-Heavily-Broken_Pct],
(c.[5 - Fragment]/c.TotalCatCount) As c.[5-Fragment_Pct]
FROM CrossTabQuery c
或者,考慮一個條件聚合查詢,尤其是因爲你的pi投票的列是少數幾個5.這通常是大多數RDMS中使用的樞軸查詢表單(因爲交叉表對於MS Access SQL是唯一的)。在這裏,允許分層表達式。如果列值超過20+,請考慮以上第二種查詢方法:
SELECT tbl_Bags.Bag_Company_ID, Format([Audit_PreVal_Date],"Short Date") AS Shift_Date,
Client_Parcels.Prelim_Size,
SUM(IIF(list_Breakages.Class_Cat = '1 - Unbroken', 1, 0))/
Count(list_Breakages.Class_Cat) AS [1 - Unbroken],
SUM(IIF(list_Breakages.Class_Cat = '2 - Chipped', 1, 0))/
Count(list_Breakages.Class_Cat) AS [2 - Chipped],
SUM(IIF(list_Breakages.Class_Cat = '3 - Lightly Broken', 1, 0))/
Count(list_Breakages.Class_Cat) AS [3 - Lightly Broken],
SUM(IIF(list_Breakages.Class_Cat = '4 - Heavily Broken', 1, 0))/
Count(list_Breakages.Class_Cat) AS [4 - Heavily Broken],
SUM(IIF(list_Breakages.Class_Cat = '5 - Fragment', 1, 0))/
Count(list_Breakages.Class_Cat) AS [5 - Fragment]
FROM list_Breakages
INNER JOIN (tbl_Bags
INNER JOIN Client_Parcels ON tbl_Bags.Bag_ID = Client_Parcels.Bag_ID)
ON list_Breakages.Breakages_ID = Client_Parcels.Breakages
WHERE (((Client_Parcels.Prelim_Size) Is Not Null))
GROUP BY tbl_Bags.Bag_Company_ID, Format([Audit_PreVal_Date],"Short Date"),
Client_Parcels.Prelim_Size;
您先生,是傳奇!你最後一塊代碼很棒。感謝您的幫助! – Duncan
哈哈......很高興我能幫上忙。快樂的編碼! – Parfait