-1

私は本当にここで立ち往生しています。

例:past_dataテーブル。

name|date      |hour   |data
____________________________________________________________
je  |06/05/2012|1       |32323
je  |06/05/2012|2       |43564
je  |20/05/2102|3       |12334
je  |06/05/2012|4       |123123
je  |13/05/2012|1       |133223

new_table

name|date      |hour   |data
____________________________________________________________
je  |06/05/2012|1       |32323
je  |06/05/2012|2       |43564
je  |20/05/2102|3       |12334
je  |06/05/2012|4       |123123

列「date」テーブル「past_date」からtalbe「new_table」にコピーして、現在の日(今日は日曜日)に一致するすべての日を検索するプログラムを作成するにはどうすればよいですか。この例では、過去の日付が日曜日であるため、past_dateテーブルの日付が2012年6月5日と2012年5月20日の行がnew_tableにコピーされたことがわかります。

次に、このプロセスを13回(合計で週)ループして、毎回1​​日ずつ増やします。たとえば、日曜日、月曜日、火曜日のようになります。

助けてください。

4

2 に答える 2

1

これにはPLSQLは必要ありません。これを
試してください:

INSERT INTO new_table (name, date, hour, data)
  SELECT name, date, hour, data
    FROM past_data
   WHERE to_char(sysdate, 'd') = to_char(date, 'd')

更新:なぜ、それが何に役立つのか本当にわかりませんが、あなたが尋ねたので...

PLSQL を使用する場合は、次のことができます。

BEGIN
  FOR i IN 0 .. 12 LOOP
    INSERT INTO new_table (name, date, hour, data)
      SELECT name, date, hour, data
        FROM past_data
       WHERE to_char(sysdate + i, 'd') = to_char(date, 'd');
  END LOOP;
END;
于 2012-06-03T06:42:55.547 に答える
0

特定の曜日を取得するための書式指定子は「D」です。

INSERT INTO new_table (name, date, hour, data)
  SELECT name, date, hour, data
    FROM past_data
   WHERE to_char(date, 'D') = 1
于 2012-06-03T07:09:50.397 に答える