如何使用连接和条件聚合的两个相关子查询



下面我有两个查询,我想把它们的输出组合起来。

select distinct [User].UserID, fname,  lname, JobTitle
from [User] 
join [Order] on [User].UserID = [Order].UserID
<表类>UserID帧lname职务高低tbody><<tr>1约翰道明>工程师2特里能源部工程师

如果您似乎只是需要用户信息,那么如何将其加入?

select U.UserID, U.fname, U.lname, U.JobTitle,
(
select avg(case when ReturnTypeID = 5 then 1.0 else 0 end) as DefectedRate
from RentalItems R
where R.OrderID = o.OrderID 
) as DefectedReturnRate
from [Order] O
inner join [User] U on U.UserID = O.UserID
where O.OrderID in (select OrderID from RentalItems where ReturnTypeID = 5);

请注意,为了清晰起见,使用了漂亮的短表别名。

作为题外话,如果你发现自己需要连接两个查询在一起,你做的和表连接完全一样,例如

select *
from (
{sub-query 1)
)
inner join (
{sub-query 2)
) on {some condition}

进一步获取有订单的用户列表,exists子句比连接更清晰,例如

select UserID, fname, lname, JobTitle
from [User] U 
where exists (select 1 from [Order] O where U.UserID = O.UserID)

最新更新