Sql server 2012 AdventureWorks2012:对于每个客户,确定2007年创建的订单数量,如果没有订单,则显示0

Sql server 2012 AdventureWorks2012:对于每个客户,确定2007年创建的订单数量,如果没有订单,则显示0,sql-server-2012,Sql Server 2012,对于每个客户,确定2007年创建的订单数量。如果客户在2007年没有创建任何订单,则显示该客户的0 显示:2007年创建的订单的客户ID如果没有,则显示0 订购人:客户ID好-这是我第三次为您回答此类问题。在我看来,到现在为止,你真的应该能够接受我的一个答案并调整它,使之适应你的另一个问题——你不同意吗 所以这里有一个可以找到2007年每个客户的销售额的例子——对于那些没有任何销售额的客户显示为0 -- determine the number of all sales in 2007 for

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

显示:2007年创建的订单的客户ID如果没有,则显示0

订购人:客户ID

好-这是我第三次为您回答此类问题。在我看来,到现在为止,你真的应该能够接受我的一个答案并调整它,使之适应你的另一个问题——你不同意吗

所以这里有一个可以找到2007年每个客户的销售额的例子——对于那些没有任何销售额的客户显示为0

-- determine the number of all sales in 2007 for each customer
;WITH SalesPerCustomer AS 
(
    SELECT 
        c.CustomerID,
        NumberOfSales = ISNULL(COUNT(soh.SalesOrderID), 0)
    FROM 
        Sales.Customer c 
    LEFT OUTER 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
可能重复的