OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

PL/SQLについての質問です

  • 困ってます
  • 質問No.183229
  • 閲覧数262
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 27% (43/159)

ビューを作成しているのですが、1つ分らないことがあり困っています。
SYSDATEに一番近い日付のレコードを抽出したいのですがどうすればいいのか分りませんどなたか知恵を貸していただけないでしょうか。よろしくお願い致します。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル7

ベストアンサー率 57% (8/14)

こんにちは。

先の内容から作成するとこんな感じでしょうか。
(確認している間が無かったので動作するかはわかりません。
B.ID || B.来店日 項目が文字型でなければTO_CAHRで文字列
変換してやる必要があるかもしれません。)


SELECT A.ID, A.CUSTNAME, A.SEX, A.PHONENO, B.来店日, B.担当, B.注文
FROM tab01 A, tab02 B
WHERE A.ID = B.ID
AND B.ID || B.来店日 IN
(SELECT ID || Max(来店日) FROM tab02
WHERE 来店日 <= TO_DATE(SYSDATE,'YYYY/MM/DD')
GROUP BY ID);
お礼コメント
saruno

お礼率 27% (43/159)

どうもありがとうございました。
望みどおりのビューを作成することができました。
感謝!感謝!です。
投稿日時 - 2001-12-12 20:53:32
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 53% (41/76)

SELECT * FROM table WHERE date-field <= SYSDATE HAVING MAX(date-field) って感じで出来ると思いますが…。 SYSDATEより新しい日付のデータが無いという前提ですが。 #未来の日付が入っているとは思えないので。 ...続きを読む
SELECT * FROM table
WHERE date-field <= SYSDATE
HAVING MAX(date-field)

って感じで出来ると思いますが…。
SYSDATEより新しい日付のデータが無いという前提ですが。
#未来の日付が入っているとは思えないので。
補足コメント
saruno

お礼率 27% (43/159)

ご解答ありがとうございます。
上の構文を試してみましたか、エラーになってしまいました。
せっかく教えていただいたのにこんなこといってすみません(汗)。
僕もいろいろ調べてみます。
投稿日時 - 2001-12-11 10:32:13
  • 回答No.2
レベル7

ベストアンサー率 57% (8/14)

とりあえず作ってみましたという感じです。 (実際使用するテーブル件数がやたら多い場合は やめといたほうがいいかも知れません。) 当日を含む過去日付で一番直近なものをとってきます。 DBはORACLEでサンプルでついている EMP表で 作成してみました。 参考になるでしょうか? SELECT EMPNO, ENAME,JOB, HIREDATE FROM EMP WHERE HIREDA ...続きを読む
とりあえず作ってみましたという感じです。
(実際使用するテーブル件数がやたら多い場合は
やめといたほうがいいかも知れません。)
当日を含む過去日付で一番直近なものをとってきます。
DBはORACLEでサンプルでついている EMP表で
作成してみました。
参考になるでしょうか?

SELECT EMPNO, ENAME,JOB, HIREDATE FROM EMP
WHERE HIREDATE =
(SELECT MAX(HIREDATE) FROM EMP
WHERE HIREDATE IN
(SELECT MAX(HIREDATE) FROM EMP
WHERE HIREDATE >= TO_DATE(SYSDATE,'YYYY/MM/DD')
GROUP BY HIREDATE));
補足コメント
saruno

お礼率 27% (43/159)

どうもありがとうございます。
SQLは結構複雑に組むことができるんですね。

もう少し突っ込んだ質問をしてよろしいでしょうか。

tab01
CUSTID CUSTNAME SEX  PHONENO  
01   鈴木    男   0311112222 
02   田村    男   0322223333

tab02
CUSTID   来店日   担当者  商品
01     2001/12/10  佐藤   ラーメン 
01     2001/12/15 斎藤   カレー
02     2001/12/08 原田   唐揚げ  
02     2001/12/14 峰    ハンバーグ 

これらの2つのテーブルから下のようなビューを作りたいと考えています。

VIEW
CUSTID CUSTNAME SEX PHONENO 来店日   担当者
01      鈴木    男   0311112222  2001/12/15     佐藤
02      田村    男   0322223333  2001/12/14    峰 


tab2のなかで同一のIDを持っているレコードの中から一番SYSDATEに近いレコードを
抽出したいのです。いろいろやっているのですが、どうしてもテーブルの中で一番SYSDATEに近いレコードを持ってきてしまいます。
ひき続き格闘しておりますので、お時間がありましたらアドバイスください。お願い致します。
投稿日時 - 2001-12-11 18:31:13
  • 回答No.3
レベル10

ベストアンサー率 37% (64/169)

Oralceはバージョンによって使用できるSQL文が 微妙に違います。 質問する際に、少なくとも  Oracleのバージョン  OS 程度は明らかにしてください。 ...続きを読む
Oralceはバージョンによって使用できるSQL文が
微妙に違います。

質問する際に、少なくとも
 Oracleのバージョン
 OS
程度は明らかにしてください。
補足コメント
saruno

お礼率 27% (43/159)

バージョンはオラクル8i 8.1.6です。
OSはwin2000です。
投稿日時 - 2001-12-11 16:32:27
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ