• ベストアンサー

空のテーブルの判別

採番テーブルを作成しています。 テーブルが空の場合に、初期値に1を設定したいので、 以下の構文を作りましたが、どちらも値が入っていれば番号+1を返してくれますが、テーブルを空にした場合は引っかかりません。 ・SELECT ISNULL( 最新番号+1, 1 ) FROM 採番テーブル ・SELECT CASE WHEN 最新番号 = '' THEN 1 ELSE 最新番号+1 END FROM 採番テーブル テーブルが空のときは1を入れるのを一文でやるのは無理でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

SELECT ISNULL(MAX(最新番号 + 1), 1) FROM 採番テーブル でいかがですか。

cima2005
質問者

お礼

上記そのままで上手くいきました。 ありがとうございました。

その他の回答 (2)

  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.2

unionでやったらどうですか? SELECT ISNULL( 最新番号+1, 1 ) FROM 採番テーブル union select 1 where not exists(select * from 採番テーブル)

cima2005
質問者

お礼

こちらでも上手くいきました。 UNIONはあまり使ったことがないので、 これから勉強しようと思います。

  • nbys_goo
  • ベストアンサー率16% (53/326)
回答No.1

CASEの方でcount(最新番号)=0ってできませんでしたっけ? nullやスペースかどうかはレコードがないと比較できませんよ。

cima2005
質問者

お礼

残念ながら 「SELECT CASE WHEN count(最新番号) = 0 THEN 1 ELSE 最新番号+1 END FROM 採番テーブル」 で確認したところ、メッセージ 8118でエラーになってしまいました。 でも、確かにレコードがないのにNULLかどうかなんかチェックしてもしょうがないですよね・・・。 ありがとうございました。

関連するQ&A