14

我有一个正确的工作 T-SQL 脚本,这种形式

SELECT  columnA
        AS
        'numbers'
FROM    tableA
WHERE   clause

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

调用上述行“脚本”我尝试了以下设置

SELECT  SUM(numbers)
FROM    (
            script
        )

从 select 中读取select count(*)我认为这是可行的,但是它没有。我不断收到“附近有不正确的语法”。

我不知道它是否重要,但这里命名的 columnA 本身是由 SELECT 语句创建的。

4

3 回答 3

21

您需要子查询的别名:

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
于 2012-11-06T18:12:03.207 回答
8

实现你想要的绝对没有任何问题。我们看不到您的 entier 查询,但最常见的问题是人们忘记为其嵌套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
于 2012-11-06T18:13:32.877 回答
0
SELECT SUM(x.ColumnA) as ColumnName FROM
(SELECT ColumnA FROM TableName) x

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

使用 order 子句会给你这个错误:

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

于 2020-06-10T13:51:53.443 回答