- - PR -
年度の算出について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-09 21:52
みなさん、こんばんは。
どんたくおです。 SQLServerを使用しております。 現在、登録者を管理するアプリケーションを作成しております。 SQL文で一点、悩ましいと思われるところがありましたので、ご助 言いただければと思います。 その年の加入者数の計算方法です。 年度は、4月1日から翌年の3月31日までを年度とします。 例えば、2006年度となりますと、 2006年4月1日〜2007年3月31日までが2006年度となります。 ここで、2006年度の加入者の数を知りたいということになりますと、 SELECT COUNT(*) FROM tbl WHERE regist between CONVERT(datetime, '2006-04-01', 102) AND CONVERT(datetime, '2007-03-31', 102) というSQL文で算出できると思いますが、これだとダサいと思いました。 // 自分で言うなよという感じですが・・・。 ↑だと、結局その年度の開始日と終了日を渡せばよいのですが、す なわちアプリケーション側で、値を算出しなければならないという ことになるかなと。 もし、2006年度というのを、一撃必殺で抽出する方法などご存知 の方がおいでましたら、ご教授いただけると幸いです。 よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2006-05-10 07:24
年度の範囲を持つテーブルと結合すれば良いのでしょうが、 それはそれでダサいって言われそうですね。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-05-10 08:12
アプリケーション側で、値を算出して それを 共通関数として使い回すのが,
保守性も高くエレガントだと思います。 | ||||||||||||
|
投稿日時: 2006-05-10 10:00
SQLサーバー側の関数を作ってしまうってのはどうでしょうか?
fn_nendo_tbl1(2006) 2006-04-01から2007/03/31検索して主キーの集合を返す select 〜〜〜 from 〜〜〜 where 主キー in fn_nendo_tbl1(2006) できるかどうかわかりませんが。 | ||||||||||||
|
投稿日時: 2006-05-10 10:08
いや、年度末が休みの場合、次年度繰越なんて場合もあるから、あながちダサくないと思いますよ。もう、いっそ年度フィールドもってしまったって・・・駄目っ? #納品後に「4月1日が休みの場合には、前年度に含めて欲しいんだけど」 #と言われて、( ̄Д ̄)エー、となった経験あり。 Oracleなら年度判定用のストアドプロシージャと、関数索引を使うと言う手もありますが、SQLServerにはありましたっけ? _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||||||||||
|
投稿日時: 2006-05-10 10:36
これで”2006年度”を考えると 指定された年度の数値(2006) + 4月1日 を作り、 その1年後を算出、算出した値から1日さかのぼるってダメですか? SQLで書くとこんな感じになりますが #プログラムから渡される数値(2006)をとりあえずDeclareで仮置きしています。
[ メッセージ編集済み 編集者: 夏椰 編集日時 2006-05-10 10:37 ] | ||||||||||||
|
投稿日時: 2006-05-10 10:50
はい。 "一撃必殺で抽出する" とあったので、コマンドが冗長になると、 「ダサいって言われそう」だと思ったのです。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-08-05 11:49
3ヶ月近くレスが遅れてすみません。
皆様のご助言をいただきまして、特に4月1日を前年度に加えるように要求があるということを考慮しまして、年度単位のテーブルを持ち、そこから開始日と終了日を取得して、計算させることにしました。 皆様の、ご助言をいただきながら、ご返信が遅れてしまったことを、大変申し訳なく思います。 本当にすみませんでした。 また、レスを下さり、実際のSQL文まで提供していただきまして、本当にありがとうございました。 どんたくお |
1