Thread: record fields as columns in reports
Hi everybody, I have a script that runs every night and produces a list of a few error conditions and the number. My manager would like it in a form where he can produce some charts in a spreadsheet (that's probably why he's a manager ";-). So the table I store the errormessages in has a format like this: CREATE TABLE repport_history ( rundate date, errordescription character varying(255), number bigint ) And I would like an output with something like: 06/22 06/23 06/24 06/25 ERROR1 10 10 9 8 ERROR2 250 300 220 200 ERROR3 4 2 0 0 (probably in csv or something like that but that is the easy part ";-) The problems are: - how to create a dynamic result type? (is that possible in a stored procedure?) - how to make sure that missing records are reported as 0 (some errors might not have entries on some dates) Has somebody ever made a generic solution for something like this? (or do I need a reporting tool?) Thanks in advance, Reinoud -- __________________________________________________ "Nothing is as subjective as reality" Reinoud van Leeuwen reinoud.v@n.leeuwen.net http://www.xs4all.nl/~reinoud __________________________________________________
On Thu, Jun 28, 2007 at 04:46:15PM +0200, Reinoud van Leeuwen wrote: > And I would like an output with something like: > > 06/22 06/23 06/24 06/25 > ERROR1 10 10 9 8 > ERROR2 250 300 220 200 > ERROR3 4 2 0 0 I think this should be possible with the "crosstab" functionality delivered in Joe Conway's tablefunc package, in contrib/. A -- Andrew Sullivan | ajs@crankycanuck.ca I remember when computers were frustrating because they *did* exactly what you told them to. That actually seems sort of quaint now. --J.D. Baldwin
On 6/28/07, Reinoud van Leeuwen <reinoud.v@n.leeuwen.net> wrote: > So the table I store the errormessages in has a format like this: > > CREATE TABLE repport_history > ( > rundate date, > errordescription character varying(255), > number bigint > ) > > > And I would like an output with something like: > > 06/22 06/23 06/24 06/25 > ERROR1 10 10 9 8 > ERROR2 250 300 220 200 > ERROR3 4 2 0 0 1. See contrib/tablefunc. 2. PivotTables (OpenOffice.org or Excel).
am Thu, dem 28.06.2007, um 16:46:15 +0200 mailte Reinoud van Leeuwen folgendes: > Hi everybody, > > I have a script that runs every night and produces a list of a few error > conditions and the number. > > My manager would like it in a form where he can produce some charts in a > spreadsheet (that's probably why he's a manager ";-). > > So the table I store the errormessages in has a format like this: > > CREATE TABLE repport_history > ( > rundate date, > errordescription character varying(255), > number bigint > ) > > > And I would like an output with something like: > > 06/22 06/23 06/24 06/25 > ERROR1 10 10 9 8 > ERROR2 250 300 220 200 > ERROR3 4 2 0 0 > > > (probably in csv or something like that but that is the easy part ";-) > > The problems are: > - how to create a dynamic result type? (is that possible in a stored > procedure?) > - how to make sure that missing records are reported as 0 > (some errors might not have entries on some dates) You can do it with conditionals. Circa: select errordescription, sum (case when rundate = '2007-06-22'::date then number else 0 end) as "06/22", sum(case when rundate = '2007-06-23'::date then number else 0 end) as "06/23" ... group by errordescription order by errordescription; and you can use a VIEW and change the fix conditions to expressions with current_date. Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net