• ベストアンサー

列名が無効とエラーが出ます。

SQLServe2000でビューを作成していて困っています。 問題のSQL文は SELECT k.hiduke, year(k.hiduke) as segyear, month(k.hiduke) as segmonth from dbo.S_View_kado2 as k where segmonth=1 上記SQLを実行すると 列名'segmonth'は無効です とエラーが発生します。where文を削除するとエラーは出ません。 where文を where segyear=2009 としてもエラーは起きません。 原因が判らず困っています。 ご回答頂けると幸いです。宜しくお願いいたします。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

View「dbo.S_View_kado2」にsegyearというフィールドだけはあるのではないですか? そうでなければ確かに変ですが、確実に言えるのは、一般的なSQL文の書き方としては、 SELECT k.hiduke, year(k.hiduke) as segyear, month(k.hiduke) as segmonth from dbo.S_View_kado2 as k where month(k.hiduke)=1 の方が正しいということです。 抽出条件に列の別名を使うことは普通はできません。

mady1234
質問者

お礼

ありがとうございます。ご指摘の通りsegyearはKado2にありました。 Where文をmonth(k.hiduke)=1にしたところ無事成功しました。 本日締め切りだったので、大変助かりました! ありがとうございます!!

関連するQ&A