Я получаю мульти часть идентификатора не может быть привязан при выполнении моего заявления - PullRequest
0 голосов
/ 24 марта 2019

Я использую это в SQL Server:

select 
    r.DATE_, r.SAL
from 
    RES r 
inner join 
    (select top 1 * 
     from BAD 
     where SAL= RES.SAL 
     order by bad_id asc) b on r.DATE_ = b.DATE_

но я получаю ошибку:

Msg 4104
Не удалось связать многоэлементный идентификатор RES.SAL

С наилучшими пожеланиями

Ответы [ 2 ]

2 голосов
/ 24 марта 2019

Вы можете использовать cross apply вместо join:

select r.DATE_, r.SAL
from RES r cross apply
     (select top 1 b.*
      from BAD b
      where r.SAL = b.SAL 
      order by b.bad_id asc
     ) b 
where r.DATE_ = b.DATE_;

Тем не менее, я думаю, что логика более четко написана как:

select r.DATE_, r.SAL
from RES r 
where r.DATE_ = (select top (1) b.DATE_
                 from BAD b
                 where r.SAL = b.SAL 
                 order by b.bad_id asc
                ) ;
0 голосов
/ 24 марта 2019

Это тоже можно сделать следующим образом

;WITH cte AS
(
   SELECT r.*,
         ROW_NUMBER() OVER (PARTITION BY b.SAL ORDER BY b.bad_id DESC) AS rn
FROM dbo.RES r
INNER JOIN dbo.BAD  b ON r.SAL= b.SAL 
)
SELECT r.DATE_, r.SAL
FROM cte
WHERE rn = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...