Синтаксис возле AS, однако я не могу определить проблему - PullRequest
0 голосов
/ 10 октября 2019

Я получаю следующие ошибки:

Сообщение 156, Уровень 15, Состояние 1, Строка 4
Неверный синтаксис рядом с ключевым словом "as".

Сообщение 156, Уровень 15, Состояние 1, Строка 10
Неправильный синтаксис рядом с ключевым словом'ween '.

Не вижу проблемы.

use leads;

select *
    (select max(HighTrw) 
     from (values (trw1), (trw2), (trw21)) as Value (HighTrw)) as [high_trw]
from 
    dbo.spi s
Where 
    (select max(HighTrw)
     from (values (trw1), (trw2), (trw21)) As updatedate (HighTrw)) between '600' and '625'

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Что касается вашего кода, меня беспокоит несколько вещей:

use leads;

-- There's no comma "," after the "*"
select*
-- This look like it belongs in the "from" section as a subquery, eg "(select ...) as sub"
-- You can then reference all of its contents in the main select using "sub.*"
(select max(HighTrw) from (values (trw1), (trw2), (trw21)) as Value(HighTrw)) as [high_trw]


from dbo.spi s

Where (select max(HighTrw)
-- Haven't seen this way of specifying a table before, is it valid? 
-- Why not explicitly define a temporary table above with the data you want, _before_ starting the query? - makes the code cleaner/clearer, IMO
            from (values (trw1), (trw2), (trw21)) As updatedate (HighTrw)) between '600' and '625'
-- There's no final ";" to terminate the query, might not be absolutely necessary, but good habit, 
-- because at some point, this code's going to dovetail into some other code, and the compiler will probably throw a wobbly

0 голосов
/ 11 октября 2019

Ваш код выглядит как код SQL Server, поэтому я буду использовать этот синтаксис.

Предположительно, вы намереваетесь что-то вроде этого:

select s.*, ss.high_trw
from dbo.spi s outer apply
     (select max(Value.HighTrw) as high_trw
      from (values (s.trw1), (s.trw2), (s.trw21)
           ) as Value(HighTrw)
     ) ss
where ss.high_trw between 600 and 625;

Примечания:

  • Вы можете поместить подзапрос в предложение from, используя apply.
  • Одной из очевидных проблем является отсутствие запятой перед коррелированным подзапросом.
  • Вы должны научиться готовиться все имена столбцов. Это особенно важно для коррелированных подзапросов.
  • 600 и 625 выглядят как числа, а не как строки. Если это так, константы не должны иметь кавычек.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...