MSSQL выдает ошибки связывания
Эээ... кажется, подзапрос в инлайн-вью и подзапрос в exists различаются, и не только в ms sql. В первом нельзя использовать внешние альясы, на что у тебя ругань и идёт (альяс "a" у тебя объявлен вне подзапросов).
Попробуй left join заменить на сross apply
use bd_740;
select a.KRA_INT=d.HA+(e.HA-d.HA)*(a.KR_INT-b.H1)/(c.H2-b.H1+0.00000000001)- f.ALT_R
from perf a
left join
(select top 1 perf.IDSKV, H as H1 from perf left join inca on perf.idskv =inca.idskv and H<KR_INT
order by H1 desc ) b on b.IDskv=a.IDskv
left join
(select top 1 perf.IDSKV as IDSKV, H as H2 from perf left join inca on perf.idskv =inca.idskv
and H>KR_INT order by H2 ) c on c.IDskv=a.IDskv
left join
inca d on d.IDskv=a.IDskv and d.H=b.H1
left join
inca e on e.IDskv=a.IDskv and e.H=c.H2
left join
BSKV f on f.IDskv=a.IDskv
where a.RO_SRD>0
Данный вариант компилится, но ничего не записывается, с чем может быть вызвано это?
что значит ничего? Ничего не возвращает? Тогда т.к. у тебя все джойны левые, проблемы с основной таблицей или условием WRE. И да, правильно насчет apply советует, только аналог левого джойна - outer apply.
что значит ничего? Ничего не возвращает? Тогда т.к. у тебя все джойны левые, проблемы с основной таблицей или условием WRE. И да, правильно насчет apply советует, только аналог левого джойна - outer apply.NULL в смысле.
перепиши на apply. У тебя во всех подзапросах выбирается по одной строчке, но они не соответствуют условиям джойна
ты же вроде не IT'шником работаешь?
Flossy тоже
спасибо, заработало
Оставить комментарий
oleg34
Данный код компилируется со следующими ошибками. Как от них избавиться?
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "a.idskv" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "a.kr_int" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "a.idskv" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "a.kr_int" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "с.idskv" could not be bound.