SELECT SUM()FROM(SELECT(SELECT())

时间:2012-11-06 18:10:26

标签: sql sql-server tsql

我有一个正确的工作T-SQL脚本

SELECT  columnA
        AS
        'numbers'
FROM    tableA
WHERE   clause

这个脚本给我一个整数列,称为数字。我想总结这些。

调用上面的行'脚本'我尝试了以下设置

SELECT  SUM(numbers)
FROM    (
            script
        )

阅读select count(*) from select我认为这可行,但事实并非如此。我一直得到“语法不正确。”

我不知道它是否重要,但在这里名为columnA本身由SELECT语句决定。

3 个答案:

答案 0 :(得分:18)

您需要子查询上的别名:

SELECT  SUM(numbers)
FROM    
(
    script  -- your subquery will go here
) src   -- place an alias here

所以你的完整查询将是:

select sum(numbers)
from
(
   SELECT  columnA  AS numbers
   FROM    tableA
   WHERE   clause
) src

答案 1 :(得分:5)

完全没有任何问题可以达到你想要的效果。我们没有看到您的查询,但最常见的问题是人们忘记在其嵌套的select语句中添加别名。看看这个完美运作的样本:

select sum(col1) as sum1 
from ( select col1 
        from ( select 1 col1 union all select 2 union all select 3 ) tmp 
     ) tmp2

根据OP,这是您的最终查询:

SELECT  SUM(numbers)
FROM    (
            SELECT  columnA
                    AS
                   'numbers'
              FROM    tableA
             WHERE   clause
        ) tmp

答案 2 :(得分:0)

SELECT SUM(x.ColumnA) as ColumnName FROM
(SELECT ColumnA FROM TableName) x

请记住,您不能在括号内的查询上使用ORDER子句。

使用订单条款会给您以下错误:

消息1033,级别15,状态1,第30行除非还指定了TOP或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效。 em>