Svein Erling Tysvær wrote:
> Lester Caine wrote:
>>> Do I end up with a list of fields each picking up one timeslot for a 
>>> particular
>>> date? Or is there some way to use the 'timeslot' table that I used to use 
>>> in the
>>> old two phase process?
>>
>> OK falling at first hurdle ...
>>
>> WITH
>>    Z as
>>    (
>>       SELECT
>> CAST ( T.TRANSACT AS DATE ) AS "Date"
>> , ( EXTRACT ( HOUR FROM (T.TRANSACT - (T.PREVIOUS / 86400.000000) ) ) + (
>> EXTRACT ( MINUTE FROM (T.TRANSACT - (T.PREVIOUS / 86400.000000) ) ) / 15 ) /
>> 4.00 ) AS "Time"
>> , COUNT( T.TICKET_NO ) AS "Issued"
>> , AVG( T.PREVIOUS ) / 60 AS "Ave_Wait"
>>FROM TRANSACTIONS T
>> GROUP BY 1, 2
>> )
>>
>> SELECT "Date"
>> ,( SELECT "Issued" FROM Z WHERE "Time" = '9.00' AND "Date" = ? ) AS "9:00"
>> ,( SELECT "Issued" FROM Z WHERE "Time" = '9.25' AND "Date" = ? ) AS "9:15"
>> ,( SELECT "Issued" FROM Z WHERE "Time" = '9.50' AND "Date" = ? ) AS "9:30"
>>FROM Z
>> ORDER BY 1
>>
>> How do I get the sub-select to pick up each value from Z ?
>
> Glad to see the fall wasn't serious, Lester!
>
> Rather than complicating things with subselects, what about:
>
> SELECT "Date"
>       , Case when "Time" = '9.00' then "Issued" end as "9:00"
>       , Case when "Time" = '9.25' then "Issued" end as "9:15"
>       , Case when "Time" = '9.50' then "Issued" end as "9:30"
> FROM Z
> ORDER BY 1

>But that will not give all of the time slots for a single day as one 'record' ?
>I'm trying to 'twist' the time slots into a list of separate fields for each
>date from the list of date/time slot records :( This just gives a 'diagonal' 
>set
>of data across the same number of line as the original ... or am I missing
>something?

Sorry, Lester, I forgot the teaspoon...

WITH
   Z as
   (
      SELECT
CAST ( T.TRANSACT AS DATE ) AS "Date"
, ( EXTRACT ( HOUR FROM (T.TRANSACT - (T.PREVIOUS / 86400.000000) ) ) + ( 
EXTRACT ( MINUTE FROM (T.TRANSACT - (T.PREVIOUS / 86400.000000) ) ) / 15 ) / 
4.00 ) AS "Time"
, COUNT( T.TICKET_NO ) AS "Issued"
, AVG( T.PREVIOUS ) / 60 AS "Ave_Wait"
FROM TRANSACTIONS T
GROUP BY 1, 2
)

SELECT "Date"
     , sum(Case when "Time" = '9.00' then "Issued" else 0 end) as "9:00"
     , sum(Case when "Time" = '9.25' then "Issued" else 0 end) as "9:15"
     , sum(Case when "Time" = '9.50' then "Issued" else 0 end) as "9:30"
FROM Z
GROUP BY 1

I think this is what you're looking for,
Set

Reply via email to