ここから本文です

解決済みの質問

並べ替えができませんでした。どうやったらできますか?

k472954さん

並べ替えができませんでした。どうやったらできますか?

「パラメータの入力」をもとめられてしまいました。

Zフィールドを数の大きい順に並べたいです。

SELECT
IIF (Y LIKE '*A*',1,0) +
IIF (Y LIKE '*B*',1,0) AS Z
FROM X
ORDER BY Z DESC

Access2010です。

違反報告

ベストアンサーに選ばれた回答

shimix703さん

ORDER BY Z DESC

でなく

ORDER BY (IIF (Y LIKE '*A*',1,0) + IIF (Y LIKE '*B*',1,0)) DESC

ではダメでしたか?

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

  • できました。ありがとうございました。みんさんありがとうございました。
  • コメント日時:2012/2/14 20:02:29

アバター

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 0点(5点満点中)0人が役に立つと評価しています。

ベストアンサー以外の回答

(3件中1〜3件)

並べ替え:回答日時の
新しい順
古い順

 

mahoo_nieeさん

>「パラメータの入力」をもとめられてしまいました。
元になっている「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つのクエリにするかしないか、
結果が出て理解できるならどちらでもかまわないと思います。

>「パラメータの入力」
結果を出すことだけでなくて、これがなぜ起きるかは復習しておいてください。
アクセスのソフトが、項目名を認識できなかったとき等、
処理続行させるためにユーザに補足で入力を促すようになっています。
半角全角の誤記などでも出てきます。

hatena1989さん

SELECT句で問題なくLike演算子は使えますね。

shimix703さんの回答のようにORDER BY句で、エイリアス(別名)ではなく式を直接記述してください。

同じ式をSELECT句とORDER BY句に2度記述するのがいやだということなら、

ORDER BY 1 DESC

というよう列位置で指定することも可能です。

osaka_o_2005さん

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
知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

ただいまの回答者

20時30分現在

3420
人が回答!!

1時間以内に6,164件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する