具有非聚合值字段的MS Access交叉表查询

时间:2017-07-28 18:36:41

标签: ms-access aggregate-functions crosstab ms-access-2016

我在呼叫中心工作,并尝试在MS Access 2016中生成交叉表查询,该查询将按月和广告来源显示销售转化率。在此查询中,我希望列表示月份,代表广告来源的行以及作为该广告来源和月份的销售转化率的值。

我尝试将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代码,而我将值设置为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];

如果需要,我可以在此处发布其他查询。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

交叉表查询始终具有GROUP BY子句,因此要显示为值的元素始终需要聚合函数。没有办法解决它。

以这种方式思考:

如果您的基本查询始终只返回每月一个单一值& PromoCode,那么你使用哪个聚合函数并不重要(好吧,COUNT除外)。只有一个值,MINMAXSUMAVG只会返回一个值。

如果可以存在多个值,那么显然它们需要聚合,因为只有一个输出" cell"每个月和每个月促销码。

由于它是一个百分比值,AVG可能是最好的选择。