Родительский дочерний запрос без использования SubQuery - PullRequest
2 голосов
/ 12 декабря 2011

Допустим, у меня есть две таблицы,

Таблица A

ID  Name
--  ----
 1   A
 2   B

Таблица B

AID  Date
--  ----
 1   1/1/2000
 1   1/2/2000
 2   1/1/2005
 2   1/2/2005

Теперь мне нужен этот результат без использования подзапроса,

ID  Name  Date
--  ----  ----
 1   A    1/2/2000
 2   B    1/2/2005

Я знаю, как сделать это с помощью подзапроса, но по какой-то причине я хочу избежать использования подзапроса?

Ответы [ 3 ]

6 голосов
/ 12 декабря 2011

Если я правильно понял ваше значение и вам нужна последняя дата из Таблицы B, то запрос ниже должен это сделать:

select a.id,a.name,max(b.date)
from TableA a
join TableB b on b.aid = a.id
group by a.id,a.name
5 голосов
/ 12 декабря 2011
SELECT a.ID, a.Name, MAX(B.Date)
FROM TableA A
INNER JOIN TableB B
    ON B.ID = A.ID
GROUP BY A.id, A.name

Это простая агрегация. Похоже, вы хотите самую высокую дату для каждого идентификатора / имени.

1 голос
/ 12 декабря 2011
create table #t1 (id int, Name varchar(10))
create table #t2 (Aid int, Dt date)

insert #t1 values (1, 'A'), (2, 'B')
insert #t2 values (1, '1/1/2000'), (1, '1/2/2000'), (2, '1/1/2005'), (2, '1/2/2005')


;WITH cte (AId, MDt)
as
(
select Aid, MAX(Dt) from #t2 group by AiD
)
select #t1.Id, #t1.Name, cte.MDt
from #t1
join cte
    on cte.AId = #t1.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...