3

私はテーブルを持っています

expenses (
    purchase_date date, 
    item_purchased varchar2(15),
    amount number
)

purchase_date (日付列) で「group by」を実行したい。たとえば、私はこれをしなければなりません:

SELECT purchase_date, count(*) 
FROM expenses 
GROUP BY purchase_date;

次のような結果が得られます:

purchase_date    count
-------------   -------
19-Jul-12           1
20-Jul-12           1

同じ日に複数のエントリがありますが

Oracle 11g を使用しています。私の友人の 1 人は Oracle 10g を使用しており、彼女のバージョンでは同じクエリが期待どおりに機能します。それでは、11gの問題は何ですか?

友達を助けてください。

ティア。:)

4

1 に答える 1

4

DATE 列には時刻も含まれます。残念ながら、SQL*Plus (使用しているようです) は、デフォルト設定では時刻を表示しません。

集計中の時間を取り除くには、trunc() 関数を使用します。

SELECT trunc(purchase_date), count(*) 
FROM expenses 
GROUP BY trunc(purchase_date);

それでも結果が変わらない場合は、データが思ったとおりではない可能性が非常に高くなります。次に、自己完結型のテスト ケースを投稿する必要があります (テスト データを作成するための INSERT ステートメントを含む)。http://sqlfiddle.comでそれを行うことができます

于 2012-07-19T08:10:01.557 に答える