- ベストアンサー
Access IIf関数について
売上規模: IIf([売上]>=5000000,[売上]=1,IIf([売上]>=1000000 And [売上]<5000000,[売上]=2,IIf([売上]>=500000 And [売上]<1000000,[売上]=3,IIf([売上]>=100000 And [売上]<500000,[売上]=4,IIf([売上]>=50000 And [売上]<100000,[売上]=5,IIf([売上]>50000,[売上]=6,[売上]=0)))))) ○○以上は1 ○○以上~○○未満は2 とするためにIIf関数を使用したのですが、結果が間違っています。 どのように記述すればよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
売上規模: IIf([売上]>=5000000,1,IIf([売上]>=1000000,2,IIf([売上]>=500000,3,IIf([売上]>=100000,4,IIf([売上]>=50000,5,IIf([売上]>50000,6,0)))))) ですね。結果の '[売上]=' と、先に判断済みの 'And [売上]<?????' が不要です。 それとIif使うより 売上規模:Switch([売上]>=5000000,1,[売上]>=1000000,2,[売上]>=500000,3,[売上]>=100000,4,[売上]>=50000,5,[売上]>50000,6,True,0) のほう早いと思います。
その他の回答 (1)
tab1: ID__売上 01__\5,000 02__\1,000 03__\500 04__\100 05__\50 06__\10 クエリ1: ID__売上____売上規模 01__\5,000_________1 02__\1,000_________2 03__\500___________3 04__\100___________4 05__\50____________5 06__\1_____________6 SELECT ID, 売上, ([売上]>=5000)+([売上]>=1000)+([売上]>=500)+([売上]>=100)+([売上]>=50)+6 AS 売上規模 FROM tab1; 単純に論理式を使った方がシンプルで判りやすいです。 ([売上]>=5000)・・・真=-1、偽=0 ですから、売上=\5,000なら真の数は5個ですので-5+6=1です。 売上=\50なら真の数は1個で-1+6=5です。 売上=\1なら真の数は0個で0+6=6です。 SELECT ID, 売上, IIf([売上]>=5000,1, IIf([売上]>=1000 And [売上]<5000,2, IIf([売上]>=500 And [売上]<1000,3, IIf([売上]>=100 And [売上]<500,4, IIf([売上]>=50 And [売上]<100,5,6))))) AS 売上規模 FROM tab1; もちろん、IIf関数の場合はこのように書きます。 ×[売上]=1 ○1 のミスです。