2013-04-11 6 views
0

Я получаю ошибку Неправильный синтаксис около x. Зачем ? Кроме того, x является временной таблицей. Если нет, то что это?«Временная таблица» - Неверный синтаксис рядом с x

select sum(x.count) 
from 
(
    select count(id) as 'count' 
    from table1 
) x 

Вышеуказанный запрос может работать. Но, когда та же логика применяется к ниже запросу, я получаю ту же ошибку - Неправильный синтаксис около table_name-

select sum(table_name.an_alias) 
from 
(select 
    top 5 
    avg(some_value) as an_alias 
    where (some_condition) 
    group by a_date 
)table_name 

При запуске только внутренний запрос, он выдает столбец DATETIME и столбец INT. Я хочу использовать внешний выбор, чтобы суммировать этот столбец int.

+0

Таблица - ключевое слово, замените таблицу именем таблицы? –

+0

try 'select sum (x. [Count])' – valverij

+1

Вы упростили это? Я могу изменить фактические таблицы, которые у меня есть, и синтаксис работает просто отлично. Что вы не рассказываете нам об этом запросе? – HLGEM

ответ

1

Этот запрос ks от меня, если вы используете фактическое имя таблицы, а не «из таблицы».

В вашем запросе x является псевдонимом для вашего подзапроса. Вы можете назвать это псевдонимом таблицы, но в этом случае он псевдонизирует подзапрос, а не таблицу.

+0

Итак, как я могу сделать это своего рода« временная таблица », а затем получить доступ столбцы? –

+0

Я не уверен, что понимаю. Вы можете получить доступ к столбцам подзапроса. Нет необходимости в таблице temp. –

1

попробовать с кронштейнами вместо songle цитирует

select sum(x.count) 
from (select count(id) as [count] 
     from table) x, 

изменения псевдонима «счет» на «юанях» и посмотреть, что происходит ...

select sum(x.cnt) 
from (select count(id) cnt 
     from table) x, 

, но понимают, что подзапрос будет иметь только один ряд, поскольку вы не группируете ни на что, поэтому это должно быть эквивалентно только

select count(id) from table 
+0

изменил таблицу на таблицу1, скобки не имеют значения. Я все еще получаю ту же ошибку. :( –

+0

Есть ли таблица в базе данных с именем table1? Что произойдет, если вы просто запустите подзапрос? 'Select count (id) from table1'? –

Смежные вопросы