- ベストアンサー
空のテーブルの判別
採番テーブルを作成しています。 テーブルが空の場合に、初期値に1を設定したいので、 以下の構文を作りましたが、どちらも値が入っていれば番号+1を返してくれますが、テーブルを空にした場合は引っかかりません。 ・SELECT ISNULL( 最新番号+1, 1 ) FROM 採番テーブル ・SELECT CASE WHEN 最新番号 = '' THEN 1 ELSE 最新番号+1 END FROM 採番テーブル テーブルが空のときは1を入れるのを一文でやるのは無理でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SELECT ISNULL(MAX(最新番号 + 1), 1) FROM 採番テーブル でいかがですか。
その他の回答 (2)
- kikaida-
- ベストアンサー率69% (37/53)
回答No.2
unionでやったらどうですか? SELECT ISNULL( 最新番号+1, 1 ) FROM 採番テーブル union select 1 where not exists(select * from 採番テーブル)
質問者
お礼
こちらでも上手くいきました。 UNIONはあまり使ったことがないので、 これから勉強しようと思います。
- nbys_goo
- ベストアンサー率16% (53/326)
回答No.1
CASEの方でcount(最新番号)=0ってできませんでしたっけ? nullやスペースかどうかはレコードがないと比較できませんよ。
質問者
お礼
残念ながら 「SELECT CASE WHEN count(最新番号) = 0 THEN 1 ELSE 最新番号+1 END FROM 採番テーブル」 で確認したところ、メッセージ 8118でエラーになってしまいました。 でも、確かにレコードがないのにNULLかどうかなんかチェックしてもしょうがないですよね・・・。 ありがとうございました。
お礼
上記そのままで上手くいきました。 ありがとうございました。