アプリ版:「スタンプのみでお礼する」機能のリリースについて

ビューを作成しているのですが、1つ分らないことがあり困っています。
SYSDATEに一番近い日付のレコードを抽出したいのですがどうすればいいのか分りませんどなたか知恵を貸していただけないでしょうか。よろしくお願い致します。

A 回答 (4件)

こんにちは。



先の内容から作成するとこんな感じでしょうか。
(確認している間が無かったので動作するかはわかりません。
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);
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
望みどおりのビューを作成することができました。
感謝!感謝!です。

お礼日時:2001/12/12 20:53

Oralceはバージョンによって使用できるSQL文が


微妙に違います。

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

この回答への補足

バージョンはオラクル8i 8.1.6です。
OSはwin2000です。

補足日時:2001/12/11 16:32
    • good
    • 0

とりあえず作ってみましたという感じです。


(実際使用するテーブル件数がやたら多い場合は
やめといたほうがいいかも知れません。)
当日を含む過去日付で一番直近なものをとってきます。
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));

この回答への補足

どうもありがとうございます。
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
    • good
    • 0

SELECT * FROM table


WHERE date-field <= SYSDATE
HAVING MAX(date-field)

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

この回答への補足

ご解答ありがとうございます。
上の構文を試してみましたか、エラーになってしまいました。
せっかく教えていただいたのにこんなこといってすみません(汗)。
僕もいろいろ調べてみます。

補足日時:2001/12/11 10:32
    • good
    • 0

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