Sql server 选择其他表中存在的行数并将其连接到SQL server表

Sql server 选择其他表中存在的行数并将其连接到SQL server表,sql-server,tsql,select,join,count,Sql Server,Tsql,Select,Join,Count,我在SQL server中有两个表。第一个是客户信息表,第二个包括所有购买, 在第一个表中,我有我们客户的id,而采购表中有谁购买了该产品的id。那么,我如何选择所有客户表,其中包括他们购买产品的时间? 我试过这个 SELECT TOP 2000 COUNT(tblpurchase.id) as id2,tblcustomers.* From tblpurchase right join on tblpurchase.id=tblcustomers.id 但他没有说什么。如何解决此问题?使

我在SQL server中有两个表。第一个是客户信息表,第二个包括所有购买, 在第一个表中,我有我们客户的id,而采购表中有谁购买了该产品的id。那么,我如何选择所有客户表,其中包括他们购买产品的时间? 我试过这个

SELECT TOP 2000 COUNT(tblpurchase.id)  as id2,tblcustomers.* From tblpurchase 
right join on tblpurchase.id=tblcustomers.id
但他没有说什么。如何解决此问题?

使用外部应用

SELECT TOP 2000 tblcustomers.* ,M.CustomerCount
From tblcustomers
OUTER APPLY(
 SELECT COUNT(*) as CustomerCount
 from tblpurchase
 WHERE tblpurchase.CustomerIDColumn = tblcustomers.id
)M

此处
tblpourchase.CustomerIDColumn
使用customerID列的实际名称

您也可以使用
左连接

SELECT TOP 2000 
    C.*,
    P.CustomerCount
From 
    tblcustomers C LEFT JOIN 
    (
         SELECT  
            TP.CustomerId, 
            COUNT(*) as CustomerCount
         FROM 
            tblpurchase TP
         GROUP BY
            TP.CustomerId
    ) P ON C.Id = P.CustomerId