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 2000 Forums
 Transact-SQL (2000)
 COUNT(*) products ordered

Author  Topic 

superhero
Yak Posting Veteran

52 Posts

Posted - 2008-02-05 : 07:35:27
Hi

I have a table with [ORDERHEADER] and [ORDERDETAILS].

[ORDERHEADER].ORDERID = ORDERDETAILS.ORDERID

Order Details would typically look like this:
ORDERID | PRODUCT CODE | QUANTITY | PRICE
1 FI44321 2 200.00
1 FI33221 3 210.00
2 ... ETC...

I want to run a query that'll tell me how many products where ordered grouped by each order.

EG:
ORDERID 1 ordered 5 products at a total of 410.00
ORDERID 2 ORDERED 1 PRODUCT AT A TOTAL OF 100.00

I'm using this query - it works but only if the productcodes are all the same, otherwise I get ORDERID = 1 TWICE IN THE RESULTS FOR INSTANCE.

SELECT ORDERHEADER.OrderID AS ORDERID, ORDERHEADER.OrderNumber AS 'YOUR ORDER NO', ORDERHEADER.CLGOrderNo AS 'OUR REF.',
ORDERDETAILS.Quantity * COUNT(*) AS ORDERTOTAL, 0 AS DELIVERED, 0 AS BACKORDERED, '-' AS ETA,
ORDERHEADER.OrderDate AS 'ORDER DATE', { fn UCASE(USERS.Fullname) } AS 'USER'
FROM ORDERHEADER INNER JOIN
ORDERDETAILS ON ORDERHEADER.OrderID = ORDERDETAILS.OrderID INNER JOIN
USERS ON ORDERHEADER.UserID = USERS.UserID
WHERE (ORDERHEADER.AccountingCode = 'datcon')
GROUP BY ORDERHEADER.OrderID, ORDERHEADER.OrderNumber, ORDERHEADER.CLGOrderNo, ORDERHEADER.OrderDate, USERS.Fullname,
ORDERDETAILS.Quantity

Ifor
Aged Yak Warrior

700 Posts

Posted - 2008-02-05 : 08:26:41
[code]SELECT *
FROM OrderHeader OH
JOIN
(
SELECT OD.OrderID
,COUNT(DISTINCT ProductCode) AS ProductCount
,SUM(OD.Quantity * OD.Price) AS OrderCost
FROM OrderDetails OD
GROUP BY OD.OrderID
) D
ON OH.OrderID = D.OrderID
JOIN Users U
ON OH.UserID = U.UserID
WHERE OH.AccountingCode = 'datcon'[/code]
Go to Top of Page
   

- Advertisement -