-1

AdventureWorks2012: Sql For each customer, determine the number of orders created in year 2007. If a customer has not created any order in year 2004, show 0 for that customer. Show: customer ID, # of orders created in 2007.

1 Answers1

0

Same approach as in my other response - use a CTE (Common Table Expression) to determine number of sales for each customer in the year 2007:

-- determine the number and total of all sales in 2007
;WITH SalesPerCustomer AS 
(
    SELECT 
        c.CustomerID,
        NumberOfSales = ISNULL(COUNT(soh.SalesOrderID), 0)
    FROM 
        Sales.Customer c 
    INNER JOIN 
        Sales.SalesOrderHeader soh ON soh.CustomerID = c.CustomerID
                                   AND soh.OrderDate >= '20070101' 
                                   AND soh.OrderDate < '20080101'
    GROUP BY    
        c.CustomerID    
)
SELECT 
    CustomerID ,
    NumberOfSales
FROM 
    SalesPerCustomer
ORDER BY 
    NumberOfSales DESC

Ordered the output by number of sales descending, so you'll get the customer with the most sales first

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • @user2223932: if this answer helped you solve you problem, you should [**accept this answer**](http://meta.stackexchange.com/q/5234/153998). This will show your appreciation for the people who *spent their own time to help you*. – marc_s Mar 30 '13 at 08:08