在Access SQL中,我正在尝试获得总数百分比的简单任务。有3个商品商店(西尔斯,凯马特和Mktpl),在任何给定的一周内,我希望根据销售额计算各自的百分比(所有可以使用一个表格获得 - tbl_BUChannelReporting)。
例如第5周的虚拟数字 - Sears 7000,kmart 2500,mktpl 2000 将返回以下比率:西尔斯61%,凯马特22%,mktpl 17%
我原本试图创建一个子查询,并没有得到任何地方,所以我基本上试图在第5周将其中一个商品商店的销售额除以第5周所有3个商品商店销售额的总和。以下是我的查询,它给了我“表达式中不能有聚合函数”错误:
SELECT FY, FW, Rept_Chnl, BU_NM, Order_Store, Item_Store, CDBL(
SUM(IIF([item_store]="sears", revenue, IIF([item_store]="kmart", revenue, IIF([item_store]="mktpl", revenue,0)))) /
(SUM(IIF([item_store]="sears",revenue,0)+SUM(IIF([item_store]="kmart",revenue,0)+SUM(IIF([item_store]="mktpl",revenue,0))))))
AS Ratios
FROM tbl_BUChannelReporting
WHERE FY = "2017"
AND FW = 5
GROUP BY FY, FW, Rept_Chnl, BU_NM, Order_Store, item_store
先谢谢大家抽出时间。这是我在这里的第一篇文章,我不认为自己只是一个新手急于从最好的学习中学习,看看结果如何。
小心!
-D
答案 0 :(得分:0)
考虑使用两个派生表或已保存的聚合查询:一个在 Item_Store 上分组,另一个不包含 Item_Store ,以便对总商店进行求和'收入。所有其他分组( FY , FW , Rept_Chnl , BU_NM , Order_Store )仍然存在两者兼而有之。然后在外部查询中,计算百分比。
SELECT i.*, CDbl(i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store,
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store) As i
INNER JOIN
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store) As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store
或者将每个SELECT
以上的语句保存为自己的查询,并在下面引用:
SELECT i.*, (i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
Indiv_Item_StoreAggQ As i
INNER JOIN
All_Item_StoreAggQ As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store