Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL查询中添加和分组项_Sql_Sql Server_Tsql - Fatal编程技术网

如何在SQL查询中添加和分组项

如何在SQL查询中添加和分组项,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在生成以下查询,并希望按CODHORESC列对记录进行分组,并对HOURS列求和 例如,我有以下数据: 14 Quarta-Feira HORÁRIO DIURNO 8:00:00 14 Quarta-Feira HORÁRIO DIURNO 2:00:00 他们希望它看起来像这样: 14 Quarta-Feira HORÁRIO DIURNO 10:00:00 这是我的SQL查询: SELECT DATENA

我正在生成以下查询,并希望按
CODHORESC
列对记录进行分组,并对
HOURS
列求和

例如,我有以下数据:

 14  Quarta-Feira   HORÁRIO DIURNO       8:00:00  
 14  Quarta-Feira   HORÁRIO DIURNO       2:00:00
他们希望它看起来像这样:

 14  Quarta-Feira   HORÁRIO DIURNO       10:00:00  
这是我的SQL查询:

SELECT 
    DATENAME(dw, DATA) DIASEM, 
    HORARIOS.DESCRICAO CODHOR, 
    IIF(DATEDIFF(HOUR, HORINI, HORFIM) >= 0, CONVERT(VARCHAR(6), DATEDIFF(second, HORINI, HORFIM) / 3600) + ':' 
+ RIGHT('0' + CONVERT(VARCHAR(2), (DATEDIFF(second, HORINI, HORFIM) % 
3600) / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR(2), DATEDIFF(second, 
HORINI, HORFIM) % 60), 2), CONVERT(VARCHAR(6), datediff(second, HORINI, DATEADD(DAY, 1, HORFIM))/3600) + ':' 
+ RIGHT('0' + CONVERT(VARCHAR(2), (DATEDIFF(second, HORINI, DATEADD(DAY, 1, HORFIM)) % 
3600) / 60), 2) + ':' + RIGHT('0' + CONVERT(VARCHAR(2), DATEDIFF(second, 
HORINI, DATEADD(DAY, 1, HORFIM)) % 60), 2)) HORAS
FROM 
    HORESC
INNER JOIN 
    HORARIOS ON HORARIOS.CODHOR = HORESC.CODHOR
INNER JOIN 
    HORAS ON HORARIOS.CODHOR = HORAS.CODHOR
获得的结果:

CODHORESC  DIASEM         CODHOR               HORAS    
---------  -------------  -------------------  -------  
        1  Segunda-Feira  HORÁRIO MATINAL      8:00:00  
        2  Terça-Feira    HORÁRIO MATINAL      8:00:00  
        3  Quinta-Feira   HORÁRIO DIURNO       8:00:00  
        3  Quinta-Feira   HORÁRIO DIURNO       2:00:00  
        4  Sexta-Feira    HORÁRIO DIURNO       8:00:00  
        4  Sexta-Feira    HORÁRIO DIURNO       2:00:00  
        5  Sábado         HORÁRIO DIURNO       8:00:00  
        5  Sábado         HORÁRIO DIURNO       2:00:00  
        6  Domingo        DESCANSO REMUNERADO  0:00:00  
        7  Segunda-Feira  HORÁRIO NOTURNO      8:00:00  
        8  Terça-Feira    HORÁRIO NOTURNO      8:00:00  
        9  Quarta-Feira   HORÁRIO NOTURNO      8:00:00  
       10  Quinta-Feira   HORÁRIO NOTURNO      8:00:00  
       11  Sexta-Feira    HORÁRIO NOTURNO      8:00:00  
       12  Sábado         HORÁRIO NOTURNO      8:00:00  
       13  Domingo        DESCANSO REMUNERADO  0:00:00  
       14  Quarta-Feira   HORÁRIO DIURNO       8:00:00  
       14  Quarta-Feira   HORÁRIO DIURNO       2:00:00  
       15  Quinta-Feira   HORÁRIO DIURNO       8:00:00  
       15  Quinta-Feira   HORÁRIO DIURNO       2:00:00  
       16  Sexta-Feira    HORÁRIO DIURNO       8:00:00  
       16  Sexta-Feira    HORÁRIO DIURNO       2:00:00  
       17  Sábado         DESCANSO REMUNERADO  0:00:00  
       18  Quarta-Feira   HORÁRIO MATINAL      8:00:00  
       19  Quinta-Feira   HORÁRIO MATINAL      8:00:00  
       20  Sexta-Feira    HORÁRIO MATINAL      8:00:00  
       21  Domingo        DESCANSO REMUNERADO  0:00:00  
       22  Segunda-Feira  HORÁRIO DIURNO       8:00:00  
       22  Segunda-Feira  HORÁRIO DIURNO       2:00:00  
       23  Terça-Feira    HORÁRIO DIURNO       8:00:00  
       23  Terça-Feira    HORÁRIO DIURNO       2:00:00  
       24  Sábado         HORÁRIO MATINAL      8:00:00  
       25  Domingo        DESCANSO REMUNERADO  0:00:00  
       26  Segunda-Feira  HORÁRIO DIURNO       8:00:00  
       26  Segunda-Feira  HORÁRIO DIURNO       2:00:00  
       27  Terça-Feira    HORÁRIO DIURNO       8:00:00  
       27  Terça-Feira    HORÁRIO DIURNO       2:00:00 

谢谢

完成所有转换后,您可以
CODHORESC和
SUM(HORAS)
分组

以下是一个例子:

为了计算
时间
的总和,您需要对查询做更多的更改:

这行吗

select CODHORESC, Max(DIASEM) DIASEM, Max(CODHOR) CODHOR,sum(datediff(minute, 0, HORAS)) / 60.0 HORAS from tblSuperTable group by CODHORESC

您不能
SUM
a
time
(或
varchar
)。