Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 View Creation

Author  Topic 

paulmoss
Starting Member

14 Posts

Posted - 2012-03-28 : 13:36:36
I have created a view that provides a count on the number of orders placed each hour, on a particular day. I am then accessing the results of this view in Microsoft Excel via odbc. Below is the code for the view;

SELECT     CASE WHEN DATEPART(hour, audit.time) = '7' THEN '7AM TO 8AM' WHEN DATEPART(hour, audit.time) = '8' THEN '8AM TO 9AM' WHEN DATEPART(hour, audit.time) 
= '9' THEN '9AM TO 10AM' WHEN DATEPART(hour, audit.time) = '10' THEN '10AM TO 11AM' WHEN DATEPART(hour, audit.time)
= '11' THEN '11AM TO 12PM' WHEN DATEPART(hour, audit.time) = '12' THEN '12PM TO 1PM' WHEN DATEPART(hour, audit.time)
= '13' THEN '1PM TO 2PM' WHEN DATEPART(hour, audit.time) = '14' THEN '2PM TO 3PM' WHEN DATEPART(hour, audit.time)
= '15' THEN '3PM TO 4PM' WHEN DATEPART(hour, audit.time) = '16' THEN '4PM TO 5PM' WHEN DATEPART(hour, audit.time)
= '17' THEN '5PM TO 6PM' WHEN DATEPART(hour, audit.time) = '18' THEN '6PM TO 7PM' ELSE CAST(DATEPART(hour, audit.time) AS VARCHAR) END AS [Hour Range],
scheme.opheadm.date_entered, COUNT(scheme.opheadm.order_no) AS [Orders Entered]
FROM scheme.opheadm INNER JOIN
scheme.slcustm ON scheme.opheadm.customer = scheme.slcustm.customer LEFT OUTER JOIN
(SELECT audit_key, audit_column, audit_time, CAST(ABS(CAST(audit_time AS int) / 3600) AS varchar(2)) + ':' + RIGHT('00' + CAST(ABS((CAST(audit_time AS int)
- 3600 * ABS(CAST(audit_time AS int) / 3600)) / 60) AS varchar(2)), 2) AS time
FROM scheme.opaudm AS opaudm_1
WHERE (audit_event = 'C') AND (audit_column = 'status')) AS audit ON scheme.opheadm.order_no = audit.audit_key
WHERE (NOT (scheme.opheadm.order_no LIKE 'C%')) AND (scheme.opheadm.status <> '9') AND (scheme.opheadm.status <> 'Q')
GROUP BY CASE WHEN DATEPART(hour, audit.time) = '7' THEN '7AM TO 8AM' WHEN DATEPART(hour, audit.time) = '8' THEN '8AM TO 9AM' WHEN DATEPART(hour, audit.time)
= '9' THEN '9AM TO 10AM' WHEN DATEPART(hour, audit.time) = '10' THEN '10AM TO 11AM' WHEN DATEPART(hour, audit.time)
= '11' THEN '11AM TO 12PM' WHEN DATEPART(hour, audit.time) = '12' THEN '12PM TO 1PM' WHEN DATEPART(hour, audit.time)
= '13' THEN '1PM TO 2PM' WHEN DATEPART(hour, audit.time) = '14' THEN '2PM TO 3PM' WHEN DATEPART(hour, audit.time)
= '15' THEN '3PM TO 4PM' WHEN DATEPART(hour, audit.time) = '16' THEN '4PM TO 5PM' WHEN DATEPART(hour, audit.time)
= '17' THEN '5PM TO 6PM' WHEN DATEPART(hour, audit.time) = '18' THEN '6PM TO 7PM' ELSE CAST(DATEPART(hour, audit.time) AS VARCHAR) END,
scheme.opheadm.date_entered
HAVING (scheme.opheadm.date_entered = CONVERT(DATETIME, '2012-03-26 00:00:00', 102))


The date has been manually entered, for this post but is a variable that is controlled on the excel sheet. This view works fine for a single date but I have now been tasked to make this work for a range. As it stands this view will work but will keep the times for each day in the range seperate but I would like to get them all rolled into one entry per time period.

Please can you suggest a modifications to my view to do this or an alternative method.

Many thanks

Paul

X002548
Not Just a Number

15586 Posts

Posted - 2012-03-29 : 10:32:55
I....just don't understand

Brett

8-)

Hint: Want your questions answered fast? Follow the direction in this link
http://weblogs.sqlteam.com/brettk/archive/2005/05/25/5276.aspx


Want to help yourself?

http://msdn.microsoft.com/en-us/library/ms130214.aspx

http://weblogs.sqlteam.com/brettk/

http://brettkaiser.blogspot.com/


Go to Top of Page

Srinika
Master Smack Fu Yak Hacker

1378 Posts

Posted - 2012-04-02 : 12:00:52
Try the following in Having Clause :
(I assume ur original query works with the Having clause as u shown here)

HAVING (scheme.opheadm.date_entered between '03/26/2012' and '04/02/2012' ))



Srinika
Go to Top of Page
   

- Advertisement -