解決済みの質問
並べ替えができませんでした。どうやったらできますか?
k472954さん
並べ替えができませんでした。どうやったらできますか?
「パラメータの入力」をもとめられてしまいました。
Zフィールドを数の大きい順に並べたいです。
SELECT
IIF (Y LIKE '*A*',1,0) +
IIF (Y LIKE '*B*',1,0) AS Z
FROM X
ORDER BY Z DESC
Access2010です。
-
- 質問日時:
- 2012/2/13 21:52:21
-
- 解決日時:
- 2012/2/14 20:02:29
-
- 回答数:
- 4
-
- お礼:
- 知恵コイン
- 25枚
-
- 閲覧数:
- 95
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
0人が役に立つと評価しています。
ベストアンサー以外の回答
(3件中1〜3件)
- 並べ替え:回答日時の
- 新しい順
- |
- 古い順
>「パラメータの入力」をもとめられてしまいました。
元になっている「X」のテーブルの項目に(別名で作り上げている)「Z」がないからです。
・・・の結果を「Z」とする、のだから、「Z」の名前を使って並べ替えはできない、という感じです。
なので、
SELECT
IIF (Y LIKE '*A*',1,0) +
IIF (Y LIKE '*B*',1,0) AS Z
FROM X
のクエリ1を作っておいて、
さらにクエリ2を作ります。
そのときにクエリ1の結果をもとに「Z」の項目を使って並べ替えすればできます。
1つのクエリにするかしないか、
結果が出て理解できるならどちらでもかまわないと思います。
>「パラメータの入力」
結果を出すことだけでなくて、これがなぜ起きるかは復習しておいてください。
アクセスのソフトが、項目名を認識できなかったとき等、
処理続行させるためにユーザに補足で入力を促すようになっています。
半角全角の誤記などでも出てきます。
- 違反報告
- 回答日時:2012/2/14 10:16:56
SELECT句で問題なくLike演算子は使えますね。
shimix703さんの回答のようにORDER BY句で、エイリアス(別名)ではなく式を直接記述してください。
同じ式をSELECT句とORDER BY句に2度記述するのがいやだということなら、
ORDER BY 1 DESC
というよう列位置で指定することも可能です。
- 違反報告
- 回答日時:2012/2/14 01:39:32
Accessは、SQLさえ準拠してないからねぇ・・・困ったものだ。
LIKE述語がSELECT句で使えない可能性がある。
InStr関数で代用しています。
http://office.microsoft.com/ja-jp/access-help/HA001228857.aspx
http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html
SELECT
(IIF (InStr(1, Y, 'A', vbBinaryCompare) > 0,1,0) +
IIF (InStr(1, Y, 'B', vbBinaryCompare) > 0,1,0)) AS Z
FROM X
ORDER BY Z DESC
これでも駄目ですか?
ここまで独自仕様にするのは逆に難しいとAccessには感心させられます。
- 違反報告
- 編集日時:2012/2/14 00:37:42
- 回答日時:2012/2/14 00:09:08


質問した人からのコメント