私は複雑な (少なくとも、私の知識レベルでは) 文字列を書き込もうとしていますが、非常に苦労しています。
これが問題です。t1 という名前と c1 という名前の 2 つのテーブルがあります。
テーブルは次のように定義されます。
table T1:
e_id, char(8),
e_date, datetime,
e_status, varchar(2)
table C1:
e_id, char(8),
e_date, datetime,
e_status, varchar(2)
各テーブルには、両方のテーブルで見つかる場合と見つからない場合がある識別子 (各テーブル内で一意である場合とそうでない場合がある) のリストと、関連するステータス (T1 テーブルでは「OK」または「R」、 C1 テーブルの「OK」または「C」)、および e_id の出現ごとに関連付けられた日時 e_date
次のようなクエリを作成しようとしています。
e_date
過去 24 時間以内のを持つ T1 テーブル内のすべての e_id 値を取得します。- 過去 30 日間 (e_date > now - 30 日) 以内に T1 で過去 24 時間 ( e_date が現在の時刻 - 24h よりも大きい)内に発生した e_id のすべての出現を取得します (例: e_id が AAAAAAAA の場合)および BBBBBBBB が t1 で e_date が過去 24 時間以内に見つかった場合、e_id の AAAAAAAA および BBBBBBBB が同じテーブル内に出現するが、e_date が過去 30 日以内のものをすべて取得します) 。
- 全体で見つかった
e_status = 'OK'
各固有の数を行の結果に追加しますe_id
T1 table
- 全体で見つかった
e_Status = 'OK'
各固有の数を行の結果に追加しますe_id
C1 table
ここにいくつかのサンプルデータ/結果を書くために最善を尽くします。わかりやすくするために、テーブルのデータ型は無視します。現在の日時が 2012-Nov-08 19:00:00 であるとします。
T1:
- e_id: 'A'、e_date: 2012-Nov-08 10:00:00、e_status: 'OK'
- e_id: 'A' , e_date: 2012-Nov-08 10:00:00 , e_status: 'R'
- e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'R'
- e_id: 'B'、e_date: 2012-Oct-15 10 : 00:00、e_status: 'OK'
- e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'OK'
- e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'R'
- e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'R'
- e_id: 'A' , e_date: 2010-Jan-01 10:00:00 , e_status: 'R'
- e_id: 'A' , e_date: 2010-Jan-01 10:00:00 , e_status: 'R'
C1:
- e_id: 'A'、e_date: 2012-Oct-01 10 : 00:00、e_status: 'C
- e_id: 'B'、e_date: 2012-Oct-01 10 : 00:00、e_status: 'OK'
- e_id: 'A'、e_date: 2012-Oct-01 10 : 00:00、e_status: 'C
- e_id: 'B'、e_date: 2012-Oct-01 10 : 00:00、e_status: 'OK'
- e_id: 'A' , e_date: 2012-Oct-01 10:00:00 , e_status: 'OK'
クエリを実行すると、次のようになります。
e_id, e_date, e_status, r_count, c_count
1. e_id: 'A' , e_date: 2012-Nov-08 10:00:00 , e_status: 'OK' , r_count: 6 , c_count: 2
2. e_id: 'A'、e_date: 2012-Nov-08 10:00:00、e_status: 'R'、r_count: 6、c_count: 2
3. e_id: 'A'、e_date: 2012-Oct-15 10 : 00:00、e_status: 'R' , r_count: 6 , c_count: 2
4. e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'OK' ,r_count:6 , c_count: 2
5. e_id: 'A' , e_date: 2012-Oct-15 10:00:00 , e_status: 'R' , r_count: 6 , c_count: 2
6. e_id: 'A' , e_date: 2012 -10 月 15日 10:00:00、e_status: 'R'、r_count: 6、c_count: 2
申し訳ありませんが、値が間違っていたため、T1 行 3 から 7 (結果の行 3 4 5 6) の日付を変更する必要がありました。
T1 の行 4 はe_id: B
、過去 24 時間に何も検出されなかったため、返されませんでした
T1 行 8 および 9 は、過去 30 日を超えていたため、返されませんでした