我正在使用soem代码在sql中查找两个数字的乘积。我正在关注this教程的示例。我想知道的是,当在select语句的FROM子句而不是表名中使用常量列表时,使用的正确语法是什么?
E.g。
SELECT EXP(SUM(LOG(num))) as product
FROM (VALUES (2),(3),(5),(7),(11),(13)) as NUMS(num)
此示例不断抛出错误
'关键字'VALUES'附近的语法不正确。'
同样,我假设这是可能的,我只是不确定正确的语法是什么。非常感谢。
答案 0 :(得分:3)
该语法对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 :(得分:1)
我认为你必须使用UNION
来定义你的NUMS表如:
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
答案 2 :(得分:1)
可能有一些较短的方法,但这当然有效:
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
答案 3 :(得分:0)
Table Value Constructors是SQL Server 2008的新手。如果您正在尝试SQL Server 2005,它们将无法运行。