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

rlp*_*rlp 12 sql t-sql sql-server

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

SELECT  columnA
        AS
        'numbers'
FROM    tableA
WHERE   clause
Run Code Online (Sandbox Code Playgroud)

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

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

SELECT  SUM(numbers)
FROM    (
            script
        )
Run Code Online (Sandbox Code Playgroud)

从select中读取select count(*)我认为这可以工作,但是,它没有.我一直得到"语法不正确".

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

Tar*_*ryn 19

您需要子查询上的别名:

SELECT  SUM(numbers)
FROM    
(
    script  -- your subquery will go here
) src   -- place an alias here
Run Code Online (Sandbox Code Playgroud)

所以你的完整查询将是:

select sum(numbers)
from
(
   SELECT  columnA  AS numbers
   FROM    tableA
   WHERE   clause
) src
Run Code Online (Sandbox Code Playgroud)

  • @Bill:Oracle在那里做错了.实现正确的事情不是问题. (2认同)

Dom*_*let 8

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

select sum(col1) as sum1 
from ( select col1 
        from ( select 1 col1 union all select 2 union all select 3 ) tmp 
     ) tmp2
Run Code Online (Sandbox Code Playgroud)

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

SELECT  SUM(numbers)
FROM    (
            SELECT  columnA
                    AS
                   'numbers'
              FROM    tableA
             WHERE   clause
        ) tmp
Run Code Online (Sandbox Code Playgroud)