1

日付列に基づいて毎月テーブルからデータを抽出する必要があります。テーブルは毎月いくつかの新しいレコードを取得するため、前月に追加されたレコードを取得できるクエリを作成する必要があります。

クエリは

   select r.iar_start_date
from reps r
where
case when (extract(month from sysdate) = 1)
  then ((extract(month from r.iar_start_date) = 12) and extract(year from r.iar_start_date) = (extract(year from sysdate) - 1))
  else (extract(month from r.iar_start_date) = (extract(month from sysdate) - 1)  and extract(year from r.iar_start_date) = extract(year from sysdate))
end

このクエリでORA:00907: missing right parenthesisエラーが発生しています。

どんな助けも非常に高く評価されます。

4

3 に答える 3

2

先月の行が必要な場合は、いくつかの標準的な日付操作のトリックを使用して、より単純な条件を実現できます。

where r.iar_start_date between trunc(add_months(sysdate,-1), 'MM') 
                       and trunc(sysdate, 'MM') - (1/86400)

ADD_MONTHS() は、月を追加するための Oracle 組み込み関数です。負のオフセットを使用すると、月が減算されます。

TRUNC() に 'MM' マスクを指定すると、月の最初の日である真夜中になります。

簡単な計算で日付を調整することもできます。 - (1/86400)日から 1 秒を減算します。この場合、前日の最大日時値が得られます。

于 2013-07-10T05:02:06.493 に答える