我在MS Access中有以下SQL查询。我正在尝试按标记为“响应”的列中包含的表达式的结果对输出进行排序。我的问题是,当我运行查询时,Access会提示我输入Response的参数值。我尝试输入零和一,看看会发生什么。查询在这些情况下运行,但排序顺序错误。有人可以向我解释为什么这个查询需要一个参数?我做错了吗?
SELECT Market,
Sum(Calls) AS SumOfCalls,
Sum([A25-54 IMPs] * 1000) AS Impressions,
Round(SumOfCalls/Impressions, 6) AS Response
FROM DRTV_CentralOnly
WHERE [Creative]<>'#N/A'
GROUP BY Market
ORDER BY Response Desc;
答案 0 :(得分:4)
不需要参数。问题是您在Response
列中使用了列别名。您需要使用实际计算。
SELECT Market
, Sum(Calls) AS SumOfCalls
, Sum([A25-54 IMPs] * 1000) AS Impressions
, Round(Sum(Calls)/Sum([A25-54 IMPs] * 1000), 6) AS Response
FROM DRTV_CentralOnly
WHERE [Creative]<>'#N/A'
GROUP BY Market
ORDER BY 4 Desc;
答案 1 :(得分:2)
问题是您在“响应”列中使用了列别名。
实际上,这根本不是问题。 MS Access确实允许以{OP}使用它们的方式使用AS
子句(“列别名”)。
相反,问题是MS Access不允许AS
子句中的ORDER BY
子句。
它正在改变ORDER BY
子句以使用修复查询的序号位置。 SELECT
子句的更改是红鲱鱼!
以下内容应该有效:
SELECT Market,
Sum(Calls) AS SumOfCalls,
Sum([A25-54 IMPs] * 1000) AS Impressions,
Round(SumOfCalls/Impressions, 6) AS Response
FROM DRTV_CentralOnly
WHERE [Creative]<>'#N/A'
GROUP BY Market
ORDER BY 4 Desc;