sql - Sql 删除子查询中的空值
问题描述
我正在尝试进行子选择查询,但我的组中有 Null 值
SELECT convert(varchar, dbo.ArretProductionJournee.DateArret, 3) ,
(select
sum (datediff(minute, ArretProductionJournee.HeureDebut, ArretProductionJournee.HeureFin) )
where ArretProductionJournee.EnumArret Like 'HH')
as HH,
(select
sum (datediff(minute, ArretProductionJournee.HeureDebut, ArretProductionJournee.HeureFin) )
where ArretProductionJournee.EnumArret Like 'HI')
as HI,
(select
sum (datediff(minute, ArretProductionJournee.HeureDebut, ArretProductionJournee.HeureFin) )
where ArretProductionJournee.EnumArret Like 'PS')
as PS
FROM
dbo.ArretProductionJournee
where dbo.ArretProductionJournee.DateArret BETWEEN '01/04/2021'and '03/04/2021'
group by ArretProductionJournee.EnumArret, convert(varchar, dbo.ArretProductionJournee.DateArret, 3)
结果如下:
我想删除那些 Null 值以获得如下结果:
---------------------------
Date Arrêt | HH | HI | PS |
---------------------------
03 / 02/ 21| 0 | 29 | 45 |
解决方案
我很确定你只想要条件聚合:
select convert(date, dbo.ArretProductionJournee.DateArret),
sum(case when apj.EnumArret = 'HH'
then datediff(minute, apj.HeureDebut, apj.HeureFin)
end) as HH,
sum(case when apj.EnumArret = 'HI'
then datediff(minute, apj.HeureDebut, apj.HeureFin)
end) as HI,
sum(case when apj.EnumArret = 'PS'
then datediff(minute, apj.HeureDebut, apj.HeureFin)
end) as PS
from dbo.ArretProductionJournee apj
where apj.DateArret between '2021-04-01' and '2021-04-03'
group by convert(date, apj.DateArret);
推荐阅读
- javascript - 在编辑文本旁边显示弹出框
- php - SQLSTATE[HY000]:[Microsoft][ODBC Driver 11 for SQL Server]TDS 协议错误
- cakephp-3.7 - 如何在 CakePHP 3.7 中创建查询构建器失败
- excel - 通过vba下拉列表
- django - FactoryBoy / Django - 处理常量
- docker - Docker - 在 docker-compose 3 中将一个卷从一个容器挂载到另一个(等效的 volumes_from)
- sql-server-2017 - 将 60 位数字转换为 bigint 时出现转换函数错误
- javascript - 如何只公开一个函数而不是类函数中的变量?
- android - Kotlin:执行存储在变量中的函数
- servlets - Spring Security ExceptionTranslationFilter 抛出“无法处理 Spring Security 异常,因为响应已经提交。”