AdventureWorks2012:对于每个客户,确定在2007年创建的订单数量。显示0表示该客户没有订单。

时间:2013-03-29 11:15:30

标签: sql-server-2012-express

AdventureWorks2012:Sql对于每个客户,确定在2007年创建的订单数量。如果客户在2004年没有创建任何订单,则为该客户显示0。显示:客户ID,2007年创建的订单数量。

1 个答案:

答案 0 :(得分:0)

与我的其他回复中的方法相同 - 使用CTE(公用表表达式)来确定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

按销售数量递减订购产出,因此您将获得销售额最高的客户