Sql server 需要在Sql server中进行简单查询
我的标准: 我有一个分销商(父表),他有许多零售商(子表)。我需要你的姓 i、 e 我的问题是: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
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