如何在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
atime
(或varchar
)。