首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT SUM() FROM (SELECT (SELECT ()

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

Stack Overflow用户
提问于 2012-11-07 02:10:26
回答 3查看 85.4K关注 0票数 14

我有一个正确工作的T-SQL-script,格式如下

代码语言:javascript
复制
SELECT  columnA
        AS
        'numbers'
FROM    tableA
WHERE   clause

这个脚本给了我一个整数列,叫做numbers。我想把这些加起来。

调用上面的代码行'script‘,我尝试了以下设置

代码语言:javascript
复制
SELECT  SUM(numbers)
FROM    (
            script
        )

阅读select count(*) from select时,我认为这是可行的,然而,事实并非如此。我一直收到“附近不正确的语法”的提示。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-07 02:12:03

您需要对子查询使用别名:

代码语言:javascript
复制
SELECT  SUM(numbers)
FROM    
(
    script  -- your subquery will go here
) src   -- place an alias here

因此,您的完整查询将是:

代码语言:javascript
复制
select sum(numbers)
from
(
   SELECT  columnA  AS numbers
   FROM    tableA
   WHERE   clause
) src
票数 21
EN

Stack Overflow用户

发布于 2012-11-07 02:13:33

要实现你想要的,绝对没有任何问题。我们看不到您的整体查询,但最常见的问题是人们忘记向其嵌套的select语句添加别名。看看这个完美工作的示例:

代码语言:javascript
复制
select sum(col1) as sum1 
from ( select col1 
        from ( select 1 col1 union all select 2 union all select 3 ) tmp 
     ) tmp2

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

代码语言:javascript
复制
SELECT  SUM(numbers)
FROM    (
            SELECT  columnA
                    AS
                   'numbers'
              FROM    tableA
             WHERE   clause
        ) tmp
票数 8
EN

Stack Overflow用户

发布于 2020-06-10 21:51:53

代码语言:javascript
复制
SELECT SUM(x.ColumnA) as ColumnName FROM
(SELECT ColumnA FROM TableName) x

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

使用order子句将产生以下错误:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13256813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档