gpt4 book ai didi

sql - 是否可以有动态 COUNT (CASE WHEN) 语句?

转载 作者:行者123 更新时间:2023-12-02 08:48:20 26 4
gpt4 key购买 nike

我有 SQL 查询,它工作正常。

select monthname (timestamp_iso(STATUSDATE)), 

count (case when service='ADSL' then 1 end) as ADSL,
count (case when service='IPTV' then 1 end) as IPTV,
count (case when service='VOIP' then 1 end) as VOIP
from INCIDENT
group by monthname(timestamp_iso(STATUSDATE))

我在该月获得每个月的服务数量。但是这些服务我有 100 多个。是否可以有动态的 CASE WHEN?获取所有服务,并为每个服务返回当月的数量。它还应该在服务的 AS 名称之后写我。另一种选择是我手动编写这 100 个服务,所以我只是想知道?谢谢

最佳答案

在 SQL 中不能有动态的列数。

您可以编写代码(用 SQL 或其他语言)来编写要执行的 SQL(动态 SQL),但这可能会变得困惑。因此,生成的 SQL 查询针对的是固定数量的列,但您的代码会在每次运行时更改 SQL 查询。

符合您需求且不需要动态重新编码的标准关系数据库模型用于规范化您的结果...

SELECT
monthname (timestamp_iso(STATUSDATE)),
service,
COUNT(*) AS count_service
FROM
incident
GROUP BY
monthname(timestamp_iso(STATUSDATE)),
service

然后问题就变成了:当您不知道会得到多少列时,您真的需要一个旋转的结果集吗?

关于sql - 是否可以有动态 COUNT (CASE WHEN) 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635061/

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