2011-08-08 3 views
1

Je travaille avec le code soem pour trouver le produit de deux nombres en sql. Je suis l'exemple du tutoriel this. Qu'est-ce que je voudrais savoir, quelle est la syntaxe correcte à utiliser lorsqu'une liste de constantes est utilisée dans une clause FROM d'instruction select au lieu d'un nom de table?SQL - utiliser correctement les constantes au lieu du nom de table dans la clause FROM

E.g.

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

Cet exemple continue de jeter l'erreur

'syntaxe incorrecte près du mot-clé 'valeurs'.'

Encore une fois, je suppose que c'est possible, je ne suis pas sûr de la syntaxe correcte. Merci beaucoup.

Répondre

3

Cette syntaxe est valide pour SQL Server 2008+. Vous devez exécuter une version antérieure.

Essayez comme:

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) 
+0

Merci Joe et tout le monde, j'oublié de mentionner que je travaillais avec SQL Server 2005. – kingrichard2005

1

Je pense que vous devez définir votre table NUMS à l'aide d'un UNION

Tels que:

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

Table Value Constructors sont nouveaux à SQL Server 2008 Si vous essayez sur SQL Server 2005, ils ne fonctionneront pas.

1

Il peut y avoir un moyen plus court mais cela fonctionne certainement:

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 
Questions connexes