2016-08-24 2 views
2

моих критериев:Необходимость простого запроса в сервере Sql

У меня есть дистрибьютор (родительская таблица), который имеет много розничной торговли (Child Table). Мне нужно последнее имя продавца.

т.е.

Distributor List | Total No. Retailer |  Last Joined Retailer Name 

мой запрос был:

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..... 

Я не получаю последний присоединился к "Retailer Name" ?.

ответ

0
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] 

возможных имена столбцов несовпадения

+0

спасибо за ответ мой запрос, ошибка возвращения, где подзапрос возвращенное Мор е, чем один запрос? .... – Suttipasanga

0

Основываясь на ваш вопрос, я создал некоторые примеры таблиц и были в состоянии получить требуемый выход. Посмотрите, поможет ли это.

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 
+0

Спасибо за мой запрос ответил, вот у меня есть проблема, я получаю дисплей только для дистрибьютора который имеет розничную торговлю. если у дистрибьютора нет ритейлера эти записи не отображаются? ..... – Suttipasanga

+0

Изменение внутреннего соединения в левое соединение, чтобы получить даже дистрибьюторов, у которых нет розничного продавца – Muthukumar