Home » SQL & PL/SQL » SQL & PL/SQL » Looking for "Elegant" Solution
Looking for "Elegant" Solution [message #41389] Thu, 26 December 2002 16:48 Go to next message
Rizwan Qazi
Messages: 135
Registered: August 2002
Senior Member
I have a table

Financials

with

fields

Contract_no varchar2(20)
date_entry date
profit number
....

I have to generate a report off this table which has

JAN FEB MAR APR... DEC
1997
1998
1999
...

which indicates the number applications were submitted in each month of the
each year.

I have a query which reads the table and inserts the data into a table I created for the report but I was wondering if someone has a more "elegant" SQL or PL/SQL solution.

Thanks

Qazi
Re: Looking for "Elegant" Solution [message #41392 is a reply to message #41389] Fri, 27 December 2002 01:30 Go to previous message
Barbara Boehmer
Messages: 9094
Registered: November 2002
Location: California, USA
Senior Member
SELECT   TO_CHAR (date_entry, 'YYYY')                            AS year, 
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'JAN', 1, 0)) AS jan,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'FEB', 1, 0)) AS feb,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'MAR', 1, 0)) AS mar,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'APR', 1, 0)) AS apr,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'MAY', 1, 0)) AS may,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'JUN', 1, 0)) AS jun,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'JUL', 1, 0)) AS jul,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'AUG', 1, 0)) AS aug,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'SEP', 1, 0)) AS sep,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'OCT', 1, 0)) AS oct,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'NOV', 1, 0)) AS nov,
         SUM (DECODE (TO_CHAR (date_entry, 'MON'), 'DEC', 1, 0)) AS dec
FROM     financials
GROUP BY TO_CHAR (date_entry, 'YYYY')
/
Previous Topic: SQL-Covertion
Next Topic: Group by
Goto Forum:
  


Current Time: Fri May 17 08:20:11 CDT 2024