2017-07-28 161 views
1

我在呼叫中心工作,并试图在MS Access 2016中生成交叉表查询,该查询将按月和广告来源显示销售转化率。在此查询中,我希望列代表数月,代表广告来源的行数和代表该广告来源和月份的销售转化率的值。带非聚合值字段的MS Access交叉表查询

我试着将Total字段设置为Expression,并得到这个错误:Your query does not include the specified expression Close Rate as part of an aggregate functionClose Rate是我用于上述销售转化率项目的字段名称。

如果我将Total字段设置为Group By,则会出现以下错误。

Crosstab 'Group By' Error

我不想虽然这里求和,计数,等等......我的价值领域,我只是想显示我为我指定的行和列字段的交叉指定的值。这可能吗?

这是交叉表查询的SQL代码,而我的Total字段的值设置为Expression

TRANSFORM [Qry_Closing by Month by Campaign].[Close Rate] 
SELECT [Qry_Closing by Month by Campaign].PromoCode 
FROM [Qry_Closing by Month by Campaign] 
GROUP BY [Qry_Closing by Month by Campaign].PromoCode 
PIVOT [Qry_Closing by Month by Campaign].Month; 

这是交叉表查询下面的查询的SQL。

SELECT [dd campaign_Five9_Final].Month, [dd campaign_Five9_Final].PromoCode, Format(Round([Total Sales]/[sumofcalls],4),"Percent") AS [Close Rate] 
FROM [dd campaign_Five9_Final]; 

下面还有其他疑问,我可以在必要时发帖。

非常感谢您的帮助!

+0

提供示例数据和所需输出。 – June7

回答

1

交叉表查询总是有一个GROUP BY子句,因此要显示为值的元素始终需要一个聚合函数。没有其他办法了。

想想这样说:

如果你的基本查询总是返回每月&促销码只一个单值,那么它不会不管你使用(当然,除了COUNT)的聚合函数。只有一个值,MINMAX,SUM,AVG将全部简单地返回那个值。

如果可以有多个值,那么显然他们需要进行聚合,因为每个月只有一个输出“单元格”& PromoCode。

由于这是百分比值,因此AVG可能是最佳选择。