2

こんにちは、オラクルのクエリで行き詰っています。現在の年は 2013 年のように、過去 2 年間のデータを取得したいので、2011 年と 2012 年のすべてのレコードを取得したいのですが、次のクエリを実行しましたが、行き詰まっています。日付形式私はオラクルにかなり慣れていないここにクエリがあります

Select 
to_date(stage_end_date,'yy') Years,SUBPRODUCT Product,sum(OFFER_COUNT) SumCount
    ,sum(offer_amount)SumAmount
from stage_amt  
and 
Offer_amount !=0 
and 
to_date(stage_end_date,'yy')
between to_char( sysdate, -2 ) and to_char( sysdate)
group by to_date(stage_end_date,'yy'),SUBPRODUCT
order by Years asc;

m ORA-00932: inconsistent datatypes: expected DATE got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s" どなたか助けてください。

よろしく

4

2 に答える 2

8

これはどう?

where stage_end_date >= trunc(sysdate, 'yyyy') - interval '2' year
  and stage_end_date <  trunc(sysdate, 'yyyy');
于 2013-04-07T10:35:34.000 に答える
1

sysdate を使用して to_char 関数を適用していますが、間違った日付形式を指定しています -

stage_end_date は日付列だと思います。もしそうなら、選択クエリで to_date の代わりに to_char 関数を使用する必要があると思います...以下のクエリを試してください-

Select To_Char(stage_end_date,'yy') Years,
       SUBPRODUCT Product,
       sum(OFFER_COUNT) SumCount,
       sum(offer_amount)SumAmount
from stage_amt  
where Offer_amount !=0 
  and to_number(To_char(stage_end_date,'YYYY')) between 
      to_number(to_char( sysdate,'YYYY'))-2 and to_number(to_char(sysdate,'YYYY'))
group by to_char(stage_end_date,'yy'),
         SUBPRODUCT
order by Years asc;

オラクルは比較中に文字列から数値へのデータ変換に注意しますが、より安全のために、TO_NUMBER日付の比較中にも関数を記述しました。

于 2013-04-07T10:36:26.947 に答える