5

次の形式の単一のテーブルがあります。

STATE SURVEY_ANSWER  
NC high  
NC moderate  
WA high  
FL low  
NC high

次の結果が得られる単一のクエリを探しています。

STATE HIGH MODERATE LOW 
NC 2 1 0  
WA 1 0 0  
FL 0 0 1

残念ながら、これらは私が得ている結果です:

STATE HIGH MODERATE LOW 
NC 3 1 1  
WA 3 1 1  
FL 3 1 1  

私が使用しているコードは次のとおりです。

Select mytable.STATE,
(SELECT COUNT(*) FROM mytable WHERE mytable.survey_answer = 'low' and state = mytable.state) AS low,
(SELECT COUNT(*) FROM mytable WHERE mytable.survey_answer = 'moderate' and state = mytable.state) AS moderate,
(SELECT COUNT(*) FROM mytable WHERE mytable.survey_answer = 'high' and state = mytable.state) AS high,
FROM mytable
GROUP BY mytable.state;

このフォーラムや他のフォーラムは非常に役に立ちましたが、何が間違っているのかわかりません。注: 私は Access を使用しているため、CASE WHEN ソリューションが機能しません。アドバイスありがとうございます。

4

2 に答える 2

2

CASE WHENAiiasの回答は、現在のクエリが機能しない理由を説明していますが、ソリューションを使用できないというあなたの仮定は部分的にしか正しくないことを指摘したいと思います。はい、使用できませんCASE WHENが、相関サブクエリが必要なわけではありません. あなたは単に使用することができます:

SELECT  mytable.STATE,
        SUM(IIF(mytable.survey_answer = 'low', 1, 0) AS low,
        SUM(IIF(mytable.survey_answer = 'moderate', 1, 0) AS moderate,
        SUM(IIF(mytable.survey_answer = 'high', 1, 0) AS high
FROM    mytable
GROUP BY mytable.state;
于 2013-06-27T18:46:35.287 に答える