プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。SQL文とプログラム(JAVAなど)の作り方で迷っております。


たとえば2003年1月1日~2003年1月31日に契約した人で、
今現在まで何ヶ月契約していたか件数を調べたいと思っております。
1ヶ月契約していた人 5件
2ヶ月契約していた人 10件

30ヶ月契約していた人 30件
のように


table
顧客表

契約日、 解約日、契約番号  
20030101 20040401 1234   
20030111 20030523 4321  
20020303 20020707 6879  
20010606 20020706 3435  

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

出力結果 1

契約日、 解約日、契約番号   契約月数
20030101 20040401 1234     15
20030111 20030523 4321     4
20020303 20020707 6879     4
20010606 20020706 3435     13

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

出力結果 2

契約月 1ヶ月契約していた人、3ヶ月契約していた人、3ヶ月契約していた人 ~
200301 3 10 12
200302 5 8 20
200303
200304

200410 10 20 30

SQL文
このような感じのSQL文(for文やwhile文でループさせたい)
たとえばbetweenの日付けのところを変数から持ってきてループさせたいです。

select 契約日, 解約日, 契約番号
from 顧客表
where 契約日 between 20030101 and 20030131



どなたかこの問題がわかる方教えていただけないでしょうか?

A 回答 (1件)

こんにちは。



Oracleで日付の差分を求めるには、
months_between()関数を使います。

ただしこの場合、一ヶ月を求める条件があるので(開始、終了の関係)、一概には言えませんが・・・。
(^^ゞ

この回答への補足

ご連絡いただきましてありがとうございました。
途中までうまくいったのですが、この1ヶ月を求める野に苦労しております。もう少し粘ってみます。

補足日時:2004/10/17 19:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す