hi there

this might be an extreme solution.. but i thought you could come up
with just one query instead of 20 temp tables.. if you dont mind to
write it :)

select id,
max(if(datetype='entered_date',date,'')) entered_date,
max(if(datetype='modified_date',date,'')) modified_date,
max(if(datetype='application_date',date,'')) application_date,
.
.
.
from yourtable
group by id
order by id

HTH
Leo




On Wed, 25 Aug 2004 16:16:05 -0700, Donna Hinshaw
<[EMAIL PROTECTED]> wrote:
> Shawn -
>
> Maybe terminology here...but I think of a "crosstab" query as one which
> yields sums or averages or
> some such tabulation.
>
> What I need to do is just "pivot" from rows to columns.
>
> The way I've come up with is this:
>
> ORIGINAL TABLE:
> columns  =  id   date   datetype
> there are about 20 datetypes (eg. entered_date, modified_date,
> application_date....)
> there can be up to 20 rows for each ID value
>
> DESIRED TABLE:
> columns =   id   entered_date   modified_date   application_date ....
> so there is just one row for each ID value
>
> SOLUTION:
> create temporary tables for each of the date types
> columns for TEMP1 = id  entered_date
> columns for TEMP2 = id modified_date
> columns for TEMP3 = id application_date
> ..... so on for all date types
>
> then, do an insert into the DESIRED TABLE for all columns,
> as select (  ... join all 20 tables on the ID value )
>
> Since there are over 23000 ID values, and over 20 date types,
> this join on all 20 TEMP tables will be an overnight batch process,
> which is fine for the users - this DESIRED TABLE is for reporting
> somewhat after the fact, and one day "out-of-synch" is fine.
>
> Any other suggestions?
>
> Donna
>
> [EMAIL PROTECTED] wrote:
>
> >I still see what you want as a crosstab query. The only difference, as you
> >say very well, is that you want to pivot on the "date type" values and not
> >the ID values.
> >
> >The only other thing you need to decide in order to make a crosstab report
> >is "what information goes in the position for the row ID=x  and column
> >datetype=y". Do you want to see the SUM of some value for each of the rows
> >with that ID value and Date type? Or the average or maximum or minimum or
> >the standard deviation for the set.  I am asking you how do you want to
> >calculate each of the values of x, y, z, and w as you listed them in your
> >example output?
> >
> >It's the same pattern as the other crosstab queries (aka pivot tables) but
> >you have to tell me which column you want to calculate values from and
> >which calculation to use before I can give you an example using your data.
> >
> >Shawn Green
> >Database Administrator
> >Unimin Corporation - Spruce Pine
> >
> >Donna Hinshaw <[EMAIL PROTECTED]> wrote on 08/20/2004 03:13:16
> >PM:
> >
> >
> >
> >>Hi - I've read the threads about converting rows of data into columns,
> >>but those threads assume the number of distinct rows is very limited
> >>(say 7 for days of week).
> >>
> >>Instead, I have a table like this:
> >>
> >>id    date   date type
> >>1     ...      a
> >>1     ...      b
> >>....
> >>2      ....     a
> >>2      ....      d
> >>
> >>Where the number of distinct id values is in the 100,000 range
> >>but the distinct date types are limited to about 20.
> >>
> >>I want to get a table (not a view) like this:
> >>
> >>id    date a       date b      date d   ......
> >>1      x               y             null
> >>2      z              null           w
> >>     (based on the values in the first table above)
> >>
> >>So...I can't think how to do this.  Help would be appreciated.
> >>
> >>TIA.
> >>dmh
> >>
> >>
> >>
> >>--
> >>MySQL General Mailing List
> >>For list archives: http://lists.mysql.com/mysql
> >>To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> >>
> >>
> >>
> >
> >
> >
>

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to