2012-03-14 9 views
6

私はMS Accessで次のSQLクエリを持っています。私は、 'レスポンス'というラベルの列に含まれる式の結果によって出力を並べ替えようとしています。私の問題は、クエリを実行すると、Accessのパラメータ値を入力するように求められます。私は何が起こるか見るためにゼロと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

1がそれを指摘するために、同様 – Andomar

+0

@Andomarのおかげで順位を拡大する必要がある場合があります。 – Taryn

+0

@Andomarは正しいです。私は照会を両方の方法で実行して検証しました。あなたのおかげで両方。 – hughesdan

2

@bluefeetは言った:

問題は、あなたが1つのあなたの応答列の列の別名を使用していることです。

実際、これはまったく問題ではありません。 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; 
関連する問題