gpt4 book ai didi

sql-server - TSQL、CASE 中的 SELECT 语句在 COUNT

转载 作者:行者123 更新时间:2023-12-04 02:08:14 25 4
gpt4 key购买 nike

我找不到任何解释为什么我的想法是错误的。
我想做类似的事情:

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

我不断得到

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.



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

而且很高兴知道我可以做些什么不同的事情以获得相同的结果。

最佳答案

您不能对不相关的表使用 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

关于sql-server - TSQL、CASE 中的 SELECT 语句在 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com