我想写一个子查询来汇总一列

时间:2015-02-19 18:55:47

标签: sql

此查询返回以下结果。

Select BookTitle,TotalNumberInStock 
From CurrentStock
Where (Year<2000 OR Year >2010);

表1

BookTitle               TotalNumberInStock
The Tower               2
Orange Goblins          1
The future of Metal     3
Chronicles of the Banjo 2
Opera                   4
Advanced SQL            5
The GAA                 4

我想写一个子总计,它总计了库存中的TotalNumber,所以我使用了这个陈述:

Select Sum(TotalNumberInstock)
From 
(
   Select BookTitle,TotalNumberInStock 
   From CurrentStock
   Where (Year<2000 OR Year >2010)
);

我收到错误说:

  

&#39 ;;&#39;附近的语法不正确。

此代码有什么问题?

3 个答案:

答案 0 :(得分:1)

您需要为子查询(也称为派生表)提供别名

select Sum(TotalNumberInstock) 
From (Select BookTitle,TotalNumberInStock From CurrentStock
        Where (Year<2000 OR Year >2010)) x ;

此更正使您的查询有效,但您不需要这样的复杂性来获得所需的结果。你可以通过这个查询得到你想要的东西

select sum(totalNumberInStock)
from CurrentStock
where year < 2000 or year > 2010

答案 1 :(得分:0)

我不确定你为什么需要子查询。

select sum(totalNumberInStock)
from CurrentStock
where year < 2000 or year > 2010

答案 2 :(得分:0)

这应该可以解决问题:

Select BookTitle,SUM(TotalNumberInStock) 
   From CurrentStock
   Where (Year < 2000 and YEAR > 2010)
   GROUP BY BookTitle