gpt4 book ai didi

SQL Server - 在子查询中使用 GROUP BY 进行计数

转载 作者:行者123 更新时间:2023-12-01 22:52:04 27 4
gpt4 key购买 nike

我一直在为这个问题苦苦挣扎!本质上,我一直在尝试在子查询中使用 COUNT 和 GROUP BY,错误返回多个值和一大堆错误。

所以,我有下表:

start_date  | ID_val     |  DIR   | tsk | status|
-------------+------------+--------+-----+--------+
25-03-2015 | 001 | U | 28 | S |
27-03-2016 | 003 | D | 56 | S |
25-03-2015 | 004 | D | 56 | S |
25-03-2015 | 001 | U | 28 | S |
16-02-2016 | 002 | D | 56 | S |
25-03-2015 | 001 | U | 28 | S |
16-02-2016 | 002 | D | 56 | S |
16-02-2016 | 005 | NULL | 03 | S |
25-03-2015 | 001 | U | 17 | S |
16-02-2016 | 002 | D | 81 | S |

理想情况下,我需要计算 ID_val 的唯一值的次数,例如 U 和 28 或 D 和 56。并且仅计算这些组合。

例如,如果可能的话,我希望返回以下结果:

start_date   | ID_val     |  no of times  | status |
-------------+------------+---------------+--------+
25-03-2015 | 001 | 3 | S |
27-03-2016 | 003 | 1 | S |
25-03-2015 | 004 | 1 | S |
25-03-2015 | 002 | 3 | S |

我已经成功地自己获取了次数,但不与具有其他值的表分开(子查询?)

非常感谢任何建议!

最佳答案

这是一个基本的条件聚合:

select id_val,
sum(case when (dir = 'U' and tsk = 28) or (dir = 'D' and tsk = 56)
then 1 else 0
end) as NumTimes
from t
group by id_val;

我省略了其他列,因为您的问题集中在 id_valdirtsk 上。其他列似乎没有必要。

关于SQL Server - 在子查询中使用 GROUP BY 进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36014028/

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