Sql删除子查询中的空值

问题描述

我正在尝试执行子选择查询,但我的组中有空值

SELECT        convert(varchar,dbo.ArretProductionJournee.DateArret,3),(select
sum (datediff(minute,ArretProductionJournee.HeureDebut,ArretProductionJournee.HeureFin)  ) 
where ArretProductionJournee.EnumArret Like 'HH')
as HH,ArretProductionJournee.HeureFin)  ) 
where ArretProductionJournee.EnumArret Like 'HI')
as HI,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,3)

结果如下:

enter image description here

我想删除那些空值以获得如下结果:

---------------------------
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.HeureFin)  
           end) as HI,sum(case when apj.EnumArret = 'PS'
                then datediff(minute,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);
,

我猜你不需要那些子选择。请改用条件聚合。试试这个。

SELECT CONVERT(varchar,DateArret,3),SUM(IIF(EnumArret Like 'HH',datediff(minute,HeureDebut,HeureFin,0)) AS HH,SUM(IIF(EnumArret Like 'HI',0)) AS HI,SUM(IIF(EnumArret Like 'PS',0)) AS PS,FROM dbo.ArretProductionJournee 
 WHERE DateArret BETWEEN '01/04/2021'and '03/04/2021'
 GROUP BY CONVERT(varchar,3)

它被称为条件聚合,因为每个 SUM(IIF(condition,val,0)) 项目只添加与条件匹配的行。

我从您的列名中删除了表名(ArretProductionJournee.HeureDebut 变成了 HeureDebut),因为您只使用了一个表,而且这样查询更容易阅读。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...