2009-04-06 2 views
3

私は報告しようとしていますが、私のarchi nemesis SQLに問題があります。"date"という質問によるSQLグループ

私はトランザクションの締め切り日が格納されているテーブルを持っています。

私はので、私がやったいたどのように多くの月あたりのトランザクションを知りたい:

SELECT trunct(closedate, 'MONTH') FROM MY_TRANSACTIONS 

私は、Oracleを使用しています。

私はこのようなリストを取得しています:だから私は、私は文の終わりにCOUNT()を選択し、GROUP BYでを追加した場合ことを」考え

2002-09-01 00:00:00.0 
2002-09-01 00:00:00.0 
... 
2002-10-01 00:00:00.0 
2002-10-01 00:00:00.0 
... 
2002-11-01 00:00:00.0 
2002-11-01 00:00:00.0 

など

すべきだが "そうではありません。私の推測は、各レコードが異なる値として扱われているからです。-S

何かお願いしますか?

ありがとうございました。

+0

@Joel:再タグありがとう。これは本当にPL-SQLですか? – OscarRyz

+0

@Oscar:この方法でTRUNC()を使用するのは、Oracle固有のものです。しかし、GROUP BYで見ている問題はベンダーに依存しません。これはSQL準拠の実装がどのように機能するかです。 –

答えて

11

すべての非aggフィールドでグループ化します。そして、あなたは日付を切り捨てたいとは思わない、あなたは月の日付の一部を望む。

ので、to_char関数(日付フィールド、 '月')によるから...グループ

選択to_char関数(日付フィールド、 '月')、COUNT(*)のようなもの。

+0

@Arnshea:ありがとう。 "datepart"のオラクルに相当するものは何ですか? – OscarRyz

+0

to_char(datefield、 'Month')はそれを行う必要があります –

+0

@Arnshea:私は最後の年のすべての詐欺師を合計したと思うので(部分的に)... – OscarRyz