2017-03-09 56 views
1

在Access SQL中,我正在尝试什么看起来应该是一个简单的任务,占总数的百分比。有3个物品商店(西尔斯,kmart & Mktpl),其中在任何给定的一周内,我希望根据销售余额计算它们各自的百分比(全部可以使用一张表获得 - tbl_BUChannelReporting)。访问SQL查询 - 总计算的百分比

例如每周5虚拟号码 - 西尔斯7000,凯马特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

考虑使用两个派生表或保存集合查询:一个是在组Item_Store和不包括为了总结总门店的收入Item_Store其他。所有其他分组(FYFWRept_ChnlBU_NMOrder_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 
+0

非常感谢您的澄清芭菲和我欣赏的快速反应! – Andronomous