我找不到任何解释为什么我的错误思考。 我想做点什么:
SELECT
COUNT(CASE WHEN (SELECT [Number] FROM [SOMETABLE] WHERE [id] = [GivenId]) = 3 THEN 1 ELSE 0 END)
FROM [SomeOtherTable]
我一直在
无法对包含聚合或子查询的表达式执行聚合函数。
理解为什么我不能做我想做的事情会很好。
也很高兴知道我能做些什么不同才能得到相同的结果。
答案 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