2012-03-14 40 views
6

Tôi có truy vấn SQL sau trong MS Access. Tôi đang cố gắng để đặt hàng đầu ra bởi các kết quả của một biểu thức chứa trong cột có nhãn là 'Response'. Vấn đề của tôi là khi tôi chạy truy vấn Access sẽ nhắc tôi nhập một giá trị tham số cho Response. Tôi đã thử nhập số không và một để xem điều gì sẽ xảy ra. Truy vấn chạy trong những trường hợp đó nhưng thứ tự sắp xếp sai. Có thể ai đó xin vui lòng giải thích cho tôi tại sao truy vấn này sẽ yêu cầu một tham số? Tôi có làm điều gì sai?Tại sao truy vấn này yêu cầu tham số?

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; 

Trả lời

4

Nó không yêu cầu tham số. Vấn đề là bạn đang sử dụng bí danh cột trong một cột Response của mình. Bạn cần phải sử dụng các tính toán thực tế để thay thế.

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

+1 Có thể phải mở rộng tự do cũng – Andomar

+0

@Andomar nhờ chỉ mà ra. – Taryn

+0

@Andomar đúng. Tôi chạy truy vấn cả hai cách để xác minh. Cảm ơn cả hai. – hughesdan

2

@bluefeet nói:

Vấn đề là bạn đang sử dụng cột bí danh trong một cột Phản ứng của bạn.

Thực ra, đó không phải là vấn đề gì cả. MS Access thực sự cho phép các mệnh đề AS ("bí danh cột") được sử dụng theo cách mà OP đã sử dụng chúng.

Thay vào đó, sự cố là MS Access không cho phép các điều khoản AS trong điều khoản ORDER BY.

Điều này đang thay đổi mệnh đề ORDER BY để sử dụng vị trí thứ tự sửa lỗi truy vấn. Những thay đổi đối với mệnh đề SELECT là một cá trích đỏ!

Sau đây nên làm việc:

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; 
Các vấn đề liên quan