CASQL中的TSQL,SELECT语句为COUNT

Ori*_*ael 3 t-sql sql-server select subquery aggregate-functions

我找不到任何解释为什么我的错误思考.我想做的事情如下:

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

我一直在

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

很高兴理解为什么我不能做我想做的事情.

也很高兴知道我可以做什么不同以获得相同的结果.

Abh*_*nav 5

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

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

如果您无法访问该链接,则以下是架构代码:

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')
Run Code Online (Sandbox Code Playgroud)

您修改后的声明:

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
Run Code Online (Sandbox Code Playgroud)

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