みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【SQL】日付の取得(ある日付を省いて指定日数を取得したい)

Aテーブルの日付フィールドを見て、引数の日付から過去7日間のデータを取得したいのですが、

その際に

Bテーブルの日付と取得不可フラグを参照し、取得しようとしている日付(引数から過去7日間)に取得不可フラグ=1がたっていれば、Aテーブルの日付7日間のカウントに含めない

としたいのですが、その判断を1回のSQLで取得することは可能でしょうか。
MINUSを使用しようとしましたが上手くいきませんでした。

お手数ですが、ご回答いただけますでしょうか。
宜しくお願いします。

投稿日時 - 2007-02-15 16:48:30

QNo.2755061

すぐに回答ほしいです

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

「カウントに含めない」という事は・・・
こういうイメージでしょうか?

select データ from A
where 日付 in (
 select 日付 from (
  select 日付 from B
  where 取得不可フラグ<>1 and 日付<(引数の日付)
  order by 日付 desc)
 where rownum<7)

やはりBに全ての日付が入っている前提です。

投稿日時 - 2007-02-15 18:19:43

補足

ありがとうございます。
更に一つ確認させてください。(オラクル実行環境がないので。。。)

select データ from A
where A日付 in (
 select B日付 from (
  select B日付 from B
  where 取得不可フラグ<>1 and B日付<(引数の日付)
  order by B日付 desc)
 where rownum<7)

日付の区別ですが、上記の認識で宜しいでしょうか。
(A日付=Aテーブルの日付
 B日付=Bテーブルの日付)

お手数をおかけしますが、ご回答いただけますでしょうか。

投稿日時 - 2007-02-15 19:27:48

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>日付の区別ですが、上記の認識で宜しいでしょうか。
はい。そのつもりでした。
分かりにくかったらすみません。

実際にSQLを書く際には、「A.日付」や「B.日付」
のような形で書かなくても大丈夫だと思います。

投稿日時 - 2007-02-16 11:04:38

お礼

ありがとうございます。
非常に困っていたので大変助かりました。

投稿日時 - 2007-02-16 12:06:28

ANo.1

Bテーブルには、全日付のレコードがあるのでしょうか?

全日付のレコードがあるのなら、単純に
結合条件
 ATBL.日付=BTBL.日付
抽出条件
 BTBL.フラグ<>'1'
 ATBL.日付 > 引数日付-7
という感じの条件指定すれば抽出できませんか?

投稿日時 - 2007-02-15 17:12:24

お礼

Bテーブルには全日付のレコードがあります。

ご回答いただきありがとうございます。
7日間(カウント)がとりたいので

ATBL.日付 > 引数日付-7

という条件ではないのですが、
大変参考になりました。

投稿日時 - 2007-02-15 19:34:08

あなたにオススメの質問