Почему этот запрос требует параметра? - PullRequest
6 голосов
/ 14 марта 2012

У меня следующий запрос SQL в MS Access. Я пытаюсь упорядочить вывод по результатам выражения, содержащегося в столбце с меткой «Ответ». Моя проблема в том, что когда я запускаю запрос, 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;

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Не требуется параметр. Проблема в том, что вы используете псевдонимы столбцов в одном столбце 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;
2 голосов
/ 15 марта 2012

@ bluefeet сказал:

Проблема в том, что вы используете псевдонимы столбцов в одном столбце ответа.

На самом деле, это совсем не проблема. MS Access действительно позволяет использовать AS предложения («псевдонимы столбцов») так, как их использует OP.

Скорее проблема в том, что 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...