excelのVBAでSQLsarverに接続しデータを取得しています。

フィールドがNEN,TUKI(ともにINT)と別れており、年をまたぐ計算がめんどくさいので下記のようにとりたいと考えています。
SELECT * FROM SYUKEI WHERE (NEN * 100 + TUKI >= 201110 And NEN * 100 + TUKI <= 201203)

※2011(NEN)を100倍して201100に、その後10(TUKI)を足せば201110になるので行けそうなのですが。エンタープライズマネージャー上では実行できました。

どなたかご指導お願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/04/08 19:22:22
  • 終了:2012/04/09 15:05:29

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/04/08 20:33:14

ポイント100pt

>エンタープライズマネージャー上では実行できました。

実行できたのならば、問題ないんじゃないでしょうか?

あと カッコは ANDで 分けたほうがいいでしょう。

(NEN * 100 + TUKI >= 201110 And NEN * 100 + TUKI <= 201203)



(NEN * 100 + TUKI >= 201110) And (NEN * 100 + TUKI <= 201203)

id:kia_44

ありがとうございます。VBAからSQLを投げる際のエラーなんでしょうか…。
カッコ分けてみて試してみます

2012/04/09 10:33:25
id:taroe No.2

taroe回答回数1099ベストアンサー獲得回数1322012/04/09 09:53:02

ポイント100pt

基本的に普通のアプローチなので問題ないと思いますが・・。
SQLがEXCELからも動作するかどうかと言うのは試してみないと分かりませんが
動かない場合は、SQLを見直すだけですが・・・

見る限り、動かないSQLにはみえないですが・・。


1.SQLを見直す
(NEN=2011 AND TUKI>=10) OR ( NEN=2012 AND TUKI <3)

条件をほかの方法でも表すことはいろいろ可能ですよ
年のまたぎ方が1年以上とかでも、書き方はいろいろありますが・・。


2.SQLsarver側でView(仮想表)を作成する

NEN*100+TUKIという値のフィールドYYYYDDを作れば
仮想表大して普通にSQLを発行するだけですよ

SELECT * FROM SYUKEIの仮想表 WHERE YYYYDD >= 201110 And YYYYDD <= 201203

EXCELでも必ず動きます。
こちらの方が何も考えなくてよいので簡単ですね。

id:kia_44

単月のものがすでにあり、年月の指定をテキストボックスにて201201という形で指定しています。
その場合はNEN=left(201201,4) TUKI=RIGHT(201201,2)という形で問題ないのですが、年またぎだと条件の作成が複雑になります。

201010~201203指定の場合や201110~201203で条件の作成に困りまして。

(NEN=2010 AND TUKI>=10 AND TUKI<=12 ) OR (NEN=2011 ) OR (NEND=2012 AND TUKI=>=1 AND <=3)

のように…。

なので、年月までのフィールドで~と思ったのですが。
やはり素直にビューを作成したほうがいいでしょうか。

2012/04/09 11:27:49
id:taroe

ビューを作成するか
SQLの中で連結フィールドを作成するのが良さそうだと思います。

2012/04/09 12:08:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません