SQL - правильно использовать константы вместо имени таблицы в предложении FROM - PullRequest
1 голос
/ 09 августа 2011

Я работаю с кодом soem, чтобы найти произведение двух чисел в sql. Я следую примеру этого учебника. Я хотел бы знать, какой правильный синтаксис использовать, когда список констант используется в предложении FROM оператора select вместо имени таблицы?

* 1005 Е.Г. *

SELECT EXP(SUM(LOG(num))) as product
FROM (VALUES (2),(3),(5),(7),(11),(13)) as NUMS(num)

В этом примере выдается ошибка

'Неверный синтаксис рядом с ключевым словом' VALUES '.'

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

Ответы [ 4 ]

3 голосов
/ 09 августа 2011

Этот синтаксис действителен для SQL Server 2008+.Вы должны работать с более ранней версией.

Попробуйте:

SELECT EXP(SUM(LOG(num))) AS product
FROM (SELECT 2 
      UNION ALL
      SELECT 3
      UNION ALL
      SELECT 5
      UNION ALL
      SELECT 7
      UNION ALL
      SELECT 11
      UNION ALL
      SELECT 13) AS NUMS(num)
1 голос
/ 09 августа 2011

Возможно, есть более короткий путь, но это, безусловно, работает:

SELECT EXP(SUM(LOG(num))) as product
from
(
select 2 as num
union all
select 3
union all
select 5
union all
select 7
union all
select 11
union all
select 13
) NUMS
1 голос
/ 09 августа 2011

Я думаю, что вы должны определить свою таблицу NUMS с помощью UNION

Например:

    SELECT EXP(SUM(LOG(NUMS.num))) as product
    FROM
    (
    select 2 as num
    UNION
    select 3
    UNION
    select 5
--you get the idea...
    ) as NUMS
0 голосов
/ 09 августа 2011

Конструкторы табличных значений являются новыми для SQL Server 2008. Если вы пробуете SQL Server 2005, они не будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...