2009-04-06 3 views
3

Я пытаюсь сделать отчет, но у меня проблемы с моим архитектором SQL.SQL-группа по запросу «date»

У меня есть таблица, где хранится дата закрытия транзакции.

Я хочу знать, сколько транзакций в месяц там было, так что я сделал:

SELECT trunct(closedate, 'MONTH') FROM MY_TRANSACTIONS 

Я использую оракул.

Я получаю список вроде этого:

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 

т.д.

Так что я подумал: «Если бы я добавить COUNT() в выбранном и GROUP BY в конце утверждения, что должен делать ", но это не так. Моя догадка заключается в том, что каждая запись рассматривается как другое значение: -S

Любой намек, пожалуйста?

Спасибо.

+0

@Joel: Спасибо за повторные теги. Это действительно PL-SQL? – OscarRyz

+0

@Oscar: Использование TRUNC() таким образом специфично для Oracle. Но проблема, которую вы видите с GROUP BY, не зависит от производителя; вот как работает SQL-совместимая реализация. –

ответ

11

Вы хотите группировать все поля, отличные от agg. И вы не хотите усекать дату, вам нужна месячная часть даты.

так что-то вроде

выберите to_char (DateField, 'Month'), COUNT (*) от ... группы по to_char (DateField, 'Месяц');

+0

@ Арнеша: Спасибо. Знаете ли вы, что такое эквивалент oracle для «datepart» ??? – OscarRyz

+0

to_char (datefield, 'Month') должен это сделать –

+0

@Arnshea: Это произошло (частично), потому что я думаю, что это сумма всех делений с прошлых лет ... – OscarRyz