我正在使用windev 20的控制中心HFSQL执行查询。 我想计算时间和日期之间的差异,即每种服务的最大和最小MAX(小时)和MIN(小时)之间的差值,以及是否存在的天数。
我尝试了DateDifference和DateTimeDifference函数,但不幸的是我出错了。
下面的代码只是为了查看每个服务的最大和最小小时,它完美地工作了,但不是我想要的:
SELECT Service.Libellé AS Libellé,
Min(DetailCircuitFacture.Heure),MAX(DetailCircuitFacture.Heure)
FROM detailcircuitfacture
joIN Service on
Service.CodeSce=detailcircuitfacture.CodeSce
group by Service.Libellé
我想对每种服务的最大和最小值之间进行日期和小时的区别 像这样:
SELECT Service.Libellé AS Libellé, WL.DateDifférence(Min(DetailCircuitFacture.DATE),
Max(DetailCircuitFacture.DATE)) AS Nombre_jours,
WL.DateHeureDifférence(Min(DetailCircuitFacture.Heure),Max(DetailCircuitFacture.Heure)) AS Nombre_heurs
FROM detailcircuitfacture
JOIN Service on
Service.CodeSce=detailcircuitfacture.CodeSce
group by Service.Libellé
我希望输出没有错误,但是实际输出是
<>请求的SQL代码错误。无法初始化查询。 SELECT或HAVING子句之外不允许使用集合函数(COUNT,AVG,SUM,MIN,MAX)
预期结果
多谢
答案 0 :(得分:0)
我要说的是您的问题试图将聚合函数的结果用作函数参数。
您可以使用子查询解决此问题:
SELECT Libellé,
WL.DateDifférence(min_date, max_date) AS Nombre_jours,
WL.DateHeureDifférence(min_heurs, max_heurs) AS Nombre_heurs
FROM (
SELECT Service.Libellé AS Libellé,
MIN(DetailCircuitFacture.DATE) AS min_date,
MAX(DetailCircuitFacture.DATE) AS max_date,
MIN(DetailCircuitFacture.Heure) AS min_heurs,
MAX(DetailCircuitFacture.Heure) AS max_heurs
FROM detailcircuitfacture
JOIN Service ON Service.CodeSce=detailcircuitfacture.CodeSce
GROUP BY Service.Libellé
) core
GROUP BY Libellé;
编辑:由于原始问题已更新为包含有关HFSQL的信息,所以我应该说我没有使用HFSQL的经验。该答案基于由MySQL,PostgreSQL和SQL Server等更常见的数据库共享的基本SQL语法。