gpt4 book ai didi

sql - 如何在单个 GROUP BY DAY(date_field) SQL 查询中包含空行?

转载 作者:行者123 更新时间:2023-12-02 23:29:54 26 4
gpt4 key购买 nike

我正在使用 MS SQL Server,但欢迎其他数据库的比较解决方案。

这是我的查询的基本形式。它从“incidentsm1”表中返回每天的调用次数:

SELECT 
COUNT(*) AS "Calls",
MAX(open_time),
open_day
FROM
(
SELECT
incident_id,
opened_by,
open_time - (9.0/24) AS open_time,
DATEPART(dd, (open_time-(9.0/24))) AS open_day
FROM incidentsm1
WHERE
DATEDIFF(DAY, open_time-(9.0/24), GETDATE())< 7

) inc1
GROUP BY open_day

此数据用于绘制条形图,但如果一周中的给定日期没有调用,则没有结果行,因此没有条形图,用户会想,“为什么图表只有六天并从周六跳到周一?”

不知何故,我需要将每天的空白行或类似的内容 UNION ALL,但我无法弄清楚。

我只能使用一条 SQL 语句执行操作,并且我具有只读访问权限,因此无法创建临时表或任何其他内容。

最佳答案

这样的事情怎么样?

SELECT 
COUNT(incident_id) AS "Calls",
MAX(open_time),
days.open_day
FROM
(
select datepart(dd,dateadd(day,-6,getdate())) as open_day union
select datepart(dd,dateadd(day,-5,getdate())) as open_day union
select datepart(dd,dateadd(day,-4,getdate())) as open_day union
select datepart(dd,dateadd(day,-3,getdate())) as open_day union
select datepart(dd,dateadd(day,-2,getdate())) as open_day union
select datepart(dd,dateadd(day,-1,getdate())) as open_day union
select datepart(dd,dateadd(day, 0,getdate())) as open_day
) days
left join
(
SELECT
incident_id,
opened_by,
open_time - (9.0/24) AS open_time,
DATEPART(dd, (open_time-(9.0/24))) AS open_day
FROM incidentsm1
WHERE DATEDIFF(DAY, open_time-(9.0/24), GETDATE()) < 7
) inc1 ON days.open_day = incidents.open_day
GROUP BY days.open_day

我只在简化的表模式上测试了它,但我认为它应该可以工作。您可能需要修改 dateadd 的东西..

关于sql - 如何在单个 GROUP BY DAY(date_field) SQL 查询中包含空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592983/

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