CASQL中的TSQL,SELECT语句为COUNT

时间:2014-01-19 10:43:15

标签: sql-server tsql select subquery aggregate-functions

我找不到任何解释为什么我的错误思考。 我想做点什么:

SELECT 
   COUNT(CASE WHEN (SELECT [Number] FROM [SOMETABLE] WHERE [id] = [GivenId]) = 3 THEN 1 ELSE 0 END) 
FROM [SomeOtherTable]

我一直在

  

无法对包含聚合或子查询的表达式执行聚合函数。

理解为什么我不能做我想做的事情会很好。

也很高兴知道我能做些什么不同才能得到相同的结果。

1 个答案:

答案 0 :(得分:5)

您不能将COUNT(聚合函数)与不相关的表一起使用,即表[SOMETABLE]和[SomeOtherTable]之间必须存在某种关系。

实现这项工作的一种可能方法是:SQL code here

如果您无法访问该链接,请参阅以下架构代码:

create table yourtable (id int, graduates int, group_code varchar(100));

insert into yourtable values 
 (1, 50, 'others'),(1, 20, 'something'), (2, 20, 'total'), (3, 35, 'total2'), 
 (4, 40, 'total3');

create table othertable (ids int, graduate int, class varchar(100))
insert into othertable values (3,2, 'others')

您修改后的声明:

SELECT SUM(CASE WHEN (o.ids) = 3 THEN 1 ELSE 0 END )
FROM yourtable as y inner join othertable as o on y.group_code = o.class
where o.graduate = 2

**感谢Giles,我将COUNT聚合函数更改为SUM