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.
| Author |
Topic |
|
TheOski
Starting Member
5 Posts |
Posted - 2007-04-26 : 12:23:54
|
| Hey,I run into a small problem with one of my queries:SELECT OrderItems.ProductCode AS 'Product Code', (SELECT Name FROM Products WHERE Products.Code = OrderItems.ProductCode) AS 'Product Name', COUNT(OrderItems.ProductCode) FROM OrdersINNER JOIN OrderItems ON Orders.uid = OrderItems.OrderID CROSS JOIN ( Select StartDate, EndDate FROM tempDate ) qWHEREOrderItems.ProductCode LIKE 'W24%'AND Orders.OrderNumber IS NOT NULLAND Orders.Void = 1AND CAST(Orders.DateOrdered AS DateTime) BETWEEN q.StartDate AND q.EndDateGROUP BY OrderItems.ProductCodeI am trying to count the number of times W24 is sold in the each month to get matrix like that:Product Code Product Name Jan Feb Mar Apr May Jun JulyW24-BLUE Wedge™<br>24 inch 87W24-LEOPARD Wedge™<br>24 inch 28W24-RED Wedge™<br>24 inch 73W24-SCT Wedge™<br>24 inch 32W24-PURPLE Wedge™<br>24 inch 57W24-TAN Wedge™<br>24 inch 67W24-JCT Wedge™<br>24 inch 11W24-BLACK Wedge™<br>24 inch 141W24-TIG Wedge™<br>24 inch 9W24-WTIG Wedge™<br>24 inch 13The table tempdate has:Start Date End Date2007-01-01 00:00:00.000 2007-01-31 00:00:00.0002007-02-01 00:00:00.000 2007-02-28 00:00:00.000I cant get sql to output the consecutive columns. Anyone has idea how to tackle this?Thanks |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-04-26 : 16:34:19
|
Holy cow!SELECT oi.ProductCode AS 'Product Code', COUNT(*) AS Total, SUM(CASE WHEN MONTH(o.DateOrdered) = 1 THEN 1 ELSE 0 END) AS 'January', SUM(CASE WHEN MONTH(o.DateOrdered) = 2 THEN 1 ELSE 0 END) AS 'February', SUM(CASE WHEN MONTH(o.DateOrdered) = 3 THEN 1 ELSE 0 END) AS 'March', SUM(CASE WHEN MONTH(o.DateOrdered) = 4 THEN 1 ELSE 0 END) AS 'April', SUM(CASE WHEN MONTH(o.DateOrdered) = 5 THEN 1 ELSE 0 END) AS 'May', SUM(CASE WHEN MONTH(o.DateOrdered) = 6 THEN 1 ELSE 0 END) AS 'June', SUM(CASE WHEN MONTH(o.DateOrdered) = 7 THEN 1 ELSE 0 END) AS 'July', SUM(CASE WHEN MONTH(o.DateOrdered) = 8 THEN 1 ELSE 0 END) AS 'August', SUM(CASE WHEN MONTH(o.DateOrdered) = 9 THEN 1 ELSE 0 END) AS 'September', SUM(CASE WHEN MONTH(o.DateOrdered) = 10 THEN 1 ELSE 0 END) AS 'October', SUM(CASE WHEN MONTH(o.DateOrdered) = 11 THEN 1 ELSE 0 END) AS 'November', SUM(CASE WHEN MONTH(o.DateOrdered) = 12 THEN 1 ELSE 0 END) AS 'December'FROM OrderItems AS oiINNER JOIN Orders AS o ON o.uID = oi.OrderIDWHERE o.Void = 1 AND o.OrderNumber IS NOT NULL AND oi.ProductCode LIKE 'W24%' AND o.DateOrdered >= '20070101' AND o.DateOrdered < '20080101'GROUP BY oi.ProductCodeORDER BY oi.ProductCode Peter LarssonHelsingborg, Sweden |
 |
|
|
TheOski
Starting Member
5 Posts |
Posted - 2007-04-26 : 19:54:53
|
| Thanks a lot Peso. Amazing. Quick question what if I wanted to run this sale query by grouping Product Codes.Lets say have a table:Product,GroupW24-BLUE,1W24-RED,1W24-PURPLE,1W24-BLACK,1W30-BLUE,1W30-RED,1W30-PURPLE,1W30-BLACK,1ESC-BLACK,2ESC-BLUE,2ESC-RED,2..........Thanks again, |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-04-26 : 19:56:44
|
| [code]SELECT oi.ProductCode AS 'Product Code', oi.ProductGroup AS 'Product Group', COUNT(*) AS Total, SUM(CASE WHEN MONTH(o.DateOrdered) = 1 THEN 1 ELSE 0 END) AS 'January', SUM(CASE WHEN MONTH(o.DateOrdered) = 2 THEN 1 ELSE 0 END) AS 'February', SUM(CASE WHEN MONTH(o.DateOrdered) = 3 THEN 1 ELSE 0 END) AS 'March', SUM(CASE WHEN MONTH(o.DateOrdered) = 4 THEN 1 ELSE 0 END) AS 'April', SUM(CASE WHEN MONTH(o.DateOrdered) = 5 THEN 1 ELSE 0 END) AS 'May', SUM(CASE WHEN MONTH(o.DateOrdered) = 6 THEN 1 ELSE 0 END) AS 'June', SUM(CASE WHEN MONTH(o.DateOrdered) = 7 THEN 1 ELSE 0 END) AS 'July', SUM(CASE WHEN MONTH(o.DateOrdered) = 8 THEN 1 ELSE 0 END) AS 'August', SUM(CASE WHEN MONTH(o.DateOrdered) = 9 THEN 1 ELSE 0 END) AS 'September', SUM(CASE WHEN MONTH(o.DateOrdered) = 10 THEN 1 ELSE 0 END) AS 'October', SUM(CASE WHEN MONTH(o.DateOrdered) = 11 THEN 1 ELSE 0 END) AS 'November', SUM(CASE WHEN MONTH(o.DateOrdered) = 12 THEN 1 ELSE 0 END) AS 'December'FROM OrderItems AS oiINNER JOIN Orders AS o ON o.uID = oi.OrderIDWHERE o.Void = 1 AND o.OrderNumber IS NOT NULL AND oi.ProductCode LIKE 'W24%' AND o.DateOrdered >= '20070101' AND o.DateOrdered < '20080101'GROUP BY oi.ProductCode, oi.ProductGroupORDER BY oi.ProductCode, oi.ProductGroup[/code]Peter LarssonHelsingborg, Sweden |
 |
|
|
|
|
|
|
|