Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL trunc/group/order by dates (ден/месец/тримесечие/година) със сума, пропускане на дати без данни

Опитайте нещо подобно (опростен пример):

with 
months_int as
(select trunc(min(inc_date), 'MM') min_month, trunc(max(inc_date), 'MM') max_month
 from data),
months as
(
  select add_months(min_month, level-1) mnth_date
  from months_int 
  connect by add_months(min_month, level-1)<= max_month
  )
select  mnth_date, sum(cnt) 
from data  right outer join months on trunc(inc_date, 'MM') = mnth_date
group by mnth_date
order by mnth_date

Ето пример за sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подизбор в Oracle

  2. Oracle SQL - Съединява Синтаксис/Ключови думи

  3. Как да разрешите ORA-29913 с външни таблици

  4. Как да съединя две таблици въз основа на стойности на подниз на полета?

  5. проблем със синтаксиса на sql