Sql server 需要在Sql server中进行简单查询

Sql server 需要在Sql server中进行简单查询,sql-server,select,right-join,Sql Server,Select,Right Join,我的标准: 我有一个分销商(父表),他有许多零售商(子表)。我需要你的姓 i、 e 我的问题是: select distName, count(retailerName) as TotalRetailer, max(retailerName) as lastPosted, max(lastjoinRetail) as lastJoindate from distributor d right outer join retailer r

我的标准:

我有一个分销商(父表),他有许多零售商(子表)。我需要你的姓

i、 e

我的问题是:

select distName,  
       count(retailerName) as TotalRetailer,  
       max(retailerName) as lastPosted,  
       max(lastjoinRetail) as lastJoindate 
from distributor d
  right outer join retailer r on d.distNo = r.retailNo
                             and r.status = 0 
                             and d.status = 0
group by distName.....
我不是最后加入的“零售商名称”


可能不匹配的列名

基于您的问题,我创建了一些示例表,并能够获得请求的输出。看看这是否有帮助

DECLARE @distributor TABLE 
  ( 
     id INT,NAME VARCHAR(100) 
  ) 

INSERT INTO @distributor 
VALUES      (1,'D1'), 
            (2,'D2') 

DECLARE @retailer TABLE 
  ( 
     id INT,NAME VARCHAR(100),distid INT,joindate DATE 
  ) 

INSERT INTO @retailer 
VALUES      (1,'R1',1,'08/01/2016'), 
            (2,'R2',1,'08/02/2016'), 
            (3,'R3',1,'08/03/2016'), 
            (4,'R4',2,'08/01/2016') 

SELECT DISTINCT a.NAME,First_value(b.NAME) 
                         OVER( 
                           partition BY a.id 
                           ORDER BY b.joindate DESC ) last_retail_name, 
                First_value(b.joindate) 
                                OVER( 
                                  partition BY a.id 
                                  ORDER BY b.joindate DESC ) last_retail_date 
FROM   @distributor a 
       INNER JOIN @retailer b 
               ON a.id = b.distid 

谢谢我的查询回复,这里我有一个问题,我得到的显示只有分销商谁有零售商。如果分销商没有零售商,则不会显示这些记录???…将“内部联接”更改为“左联接”,以获得即使没有零售商的分销商也愿意答复我的查询,返回的错误,其中子查询返回了多个查询?。。。。
select [Distributor_Name]
    , [Total_No._Retailer]
    , [Last date]
    , (select name from tbl_Retailer where [Last date] = CreatedDate) AS [Last Joined Retailer Name]
from
(
    select
        d.Name AS 'Distributor_Name'
        ,count(R.name) AS 'Total_No._Retailer'
        ,max(R.CreatedDate) as 'Last date'
    from tbl_Distributor AS D
    inner join tbl_Retailer AS R on D.id = R.DistributorId
    Group by D.Name
) as T
order by [Distributor_Name]
DECLARE @distributor TABLE 
  ( 
     id INT,NAME VARCHAR(100) 
  ) 

INSERT INTO @distributor 
VALUES      (1,'D1'), 
            (2,'D2') 

DECLARE @retailer TABLE 
  ( 
     id INT,NAME VARCHAR(100),distid INT,joindate DATE 
  ) 

INSERT INTO @retailer 
VALUES      (1,'R1',1,'08/01/2016'), 
            (2,'R2',1,'08/02/2016'), 
            (3,'R3',1,'08/03/2016'), 
            (4,'R4',2,'08/01/2016') 

SELECT DISTINCT a.NAME,First_value(b.NAME) 
                         OVER( 
                           partition BY a.id 
                           ORDER BY b.joindate DESC ) last_retail_name, 
                First_value(b.joindate) 
                                OVER( 
                                  partition BY a.id 
                                  ORDER BY b.joindate DESC ) last_retail_date 
FROM   @distributor a 
       INNER JOIN @retailer b 
               ON a.id = b.distid