Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No13316.ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 

タイトルORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13316
投稿日: 2009/04/15(Wed) 15:12
投稿者: あるじー
OS:Win XP
Access Version: 2000

お世話になります。タイトルにあるようにSQLで並び替えを行ったときに
NULLや空白を最後に表示したいです。よろしくお願いします

自分でぐぐったりしてみて作ったクエリは
SELECT *
FROM ((情報 LEFT JOIN M_部署 ON [情報].[部署]=[M_部署].[部署名]) LEFT JOIN M_役職 ON [情報].[役職]=[M_役職].[役職名]) LEFT JOIN M_区分 ON [情報].[区分]=[M_区分].[区分名]
ORDER BY [M_部署].[並び順],
case
when [M_役職].[役職名] IS NULL THEN '99'
when [M_役職].[役職名] = '' THEN '98'
ELSE [M_役職].[並び順]
,[M_区分].[並び順], [社員ID];

上記のクエリでのエラーは
CASE〜endまでで 構文エラー 演算子がありません
となっています。

M_役職テーブル構造
ID、役職名、並び順
1、部長、1
2、課長、2
3、リーダー、3
4、 、4
5、NULL、5


ちなみに並び替え以外うまくいっているクエリは
SELECT *
FROM ((情報 LEFT JOIN M_部署 ON [情報].[部署]=[M_部署].[部署名]) LEFT JOIN M_役職 ON [情報].[役職]=[M_役職].[役職名]) LEFT JOIN M_区分 ON [情報].[区分]=[M_区分].[区分名]
ORDER BY [M_部署].[並び順],[M_役職].[並び順],[M_区分].[並び順], [社員ID];

で最初に空白やNULLが来てその後に役職の並び順となります

よろしくお願いします。

タイトルRe: ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13317
投稿日: 2009/04/15(Wed) 15:28
投稿者: Dr.天馬
> 上記のクエリでのエラーは
> CASE〜endまでで 構文エラー 演算子がありません
> となっています。
JetSQLでは Case Whenは使えません。

ORDER BY M_部署.並び順, IIF(M_役職.役職名 = "", "98", Nz(M_役職.役職名, "99")), ・・・

タイトルRe^2: ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13318
投稿日: 2009/04/15(Wed) 15:31
投稿者: あるじー
> > 上記のクエリでのエラーは
> > CASE〜endまでで 構文エラー 演算子がありません
> > となっています。
> JetSQLでは Case Whenは使えません。
>
> ORDER BY M_部署.並び順, IIF(M_役職.役職名 = "", "98", Nz(M_役職.役職名, "99"))

早い返信ありがとうございます。
そうなんですか、、、ぐぐったときにIIFをCASEで書けるというサイトがあったので
ADOとDAOでちがうのかな??

さっそくやってみて、また報告します
ありがとうございます

タイトルRe: ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13319
投稿日: 2009/04/15(Wed) 15:32
投稿者: S.S
> ORDER BY [M_部署].[並び順],
> case
> when [M_役職].[役職名] IS NULL THEN '99'
> when [M_役職].[役職名] = '' THEN '98'
> ELSE [M_役職].[並び順]
> ,[M_区分].[並び順], [社員ID];

SQLServer ですか?
SQLServer なら End が抜けてますよ。

・・・というより、ちょっとおかしいですね。

MDB なら↓
IIf(IsNull([M_役職].[役職名]), "99", IIf([M_役職].[役職名] = "", "98", [M_役職].[並び順]))

タイトルRe^2: ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13320
投稿日: 2009/04/15(Wed) 15:43
投稿者: あるじー
> > ORDER BY [M_部署].[並び順],
> > case
> > when [M_役職].[役職名] IS NULL THEN '99'
> > when [M_役職].[役職名] = '' THEN '98'
> > ELSE [M_役職].[並び順]
> > ,[M_区分].[並び順], [社員ID];
>
> SQLServer ですか?
> SQLServer なら End が抜けてますよ。
>
> ・・・というより、ちょっとおかしいですね。
>
> MDB なら↓
> IIf(IsNull([M_役職].[役職名]), "99", IIf([M_役職].[役職名] = "", "98", [M_役職].[並び順]))
>

Dr.天馬 さん S.Sさん どうもありがとうございました。
S.Sさんの並び順が入っているものを使わせていただきました。

Endはコピペミスでしたすいません。

ふだんPHPでSQLをあつかっているので、こんがらがってしまっていたようです。

今、2年前に作成したプログラムを仕様追加・変更&メンテナンスを行っているので
また質問するかも知れませんが、よろしくお願い致します。

ありがとうございました m_(・v・)_m

タイトルRe^3: ORDER BY 区でNULLや空白を最後にしたい→演算子エラーが解決できません 
記事No: 13321
投稿日: 2009/04/15(Wed) 15:44
投稿者: あるじー
解決マーク忘れてました〜。


このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。

 

ページの先頭へ 前ページへ戻る