2012-03-14 2 views
6

MS Access에서 다음 SQL 쿼리가 있습니다. 'Response'로 표시된 열에 포함 된 표현식의 결과로 출력을 정렬하려고합니다. 내 문제는 내가 쿼리를 실행하면 응답에 대한 매개 변수 값을 입력하라는 메시지가 나타납니다. 나는 무엇이 일어날지를보기 위해 0과 1을 입력하려고 노력했다. 이 경우 쿼리가 실행되지만 정렬 순서가 잘못되었습니다. 누군가이 쿼리에 매개 변수가 필요한 이유를 설명해 주시겠습니까? 내가 뭔가 잘못하고 있는거야?이 쿼리에 매개 변수가 필요한 이유는 무엇입니까?

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; 

답변

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

한 그 지적에 대한뿐만 아니라 – Andomar

+0

@Andomar 덕분에 의해 순서를 확장 할 수도 있습니다. – Taryn

+0

@Andomar 맞습니다. 확인을 위해 쿼리를 두 가지 방법으로 실행했습니다. 둘 다 감사합니다. – hughesdan

2

@bluefeet는 말했다 :

문제는 하나 귀하의 응답 열에 열 별칭을 사용하는 것입니다.

사실, 그건 전혀 문제가되지 않습니다. MS Access는 실제로 OP가 사용했던 방법으로 AS 절 ("별칭")을 사용할 수 있습니다.

MS Access에서 ORDER BY 절에 AS 절을 허용하지 않는 것이 문제입니다.

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; 
관련 문제