Fórum Calculo de tempo médio SQL #594453
25/05/2018
0
tenho a seguinte consulta.
select a.cdfil, a.nrrqu, a.serier, a.data, a.hora, a.cdetapa, b.descricao from fc12500 a, fc12540 b where
b.cdetapa=a.cdetapa and
a.nrrqu= 6650 and
a.cdopera=1
order by a.data, a.horaele retorna todas as etapas com um campo contendo a data e outro campo contendo a hora.
como eu poderia fazer para calcular o tempo entre uma etapa e outra?
no aguardo da ajuda de voces um forte abraço.
Reginaldo Souza
Curtir tópico
+ 0Post mais votado
25/05/2018
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
convert(datetime, cast(a.data as varchar(10))+' '+a.hora) datahoraatual,
(select top 1 convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) <
convert(datetime, cast(a.data as varchar(10))+' '+a.hora)
order by convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
order by
a.data, a.horae, para calcular o tempo decorrido entre elas, pode ser assim (pode ter algum erro de sintaxe, mas a idéia geral é essa):
select
t.*,
convert(time, t.datahoraatual - t.datahoraanterior, 8) intervalo
from (
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
convert(datetime, cast(a.data as varchar(10))+' '+a.hora) datahoraatual,
(select top 1 convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) <
convert(datetime, cast(a.data as varchar(10))+' '+a.hora)
order by convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
) t
order by
t.data, t.horaEmerson Nascimento
Gostei + 2
Mais Posts
25/05/2018
Reginaldo Souza
Gostei + 0
25/05/2018
Reginaldo Souza
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
convert(datetime, cast(a.data as varchar(10))+' '+a.hora) datahoraatual,
(select top 1 convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) <
convert(datetime, cast(a.data as varchar(10))+' '+a.hora)
order by convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
order by
a.data, a.horae, para calcular o tempo decorrido entre elas, pode ser assim (pode ter algum erro de sintaxe, mas a idéia geral é essa):
select
t.*,
convert(time, t.datahoraatual - t.datahoraanterior, 8) intervalo
from (
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
convert(datetime, cast(a.data as varchar(10))+' '+a.hora) datahoraatual,
(select top 1 convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) <
convert(datetime, cast(a.data as varchar(10))+' '+a.hora)
order by convert(datetime, cast(a2.data as varchar(10))+' '+a2.hora) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
) t
order by
t.data, t.horadeu esse erro nessa consulta
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 4, column 16.
t.
Gostei + 0
25/05/2018
Emerson Nascimento
Gostei + 0
25/05/2018
Reginaldo Souza
2.5
Gostei + 0
28/05/2018
Emerson Nascimento
select
t.*,
datediff(second, t.datahoraanterior, t.datahoraatual) dif_segundos
from (
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
cast(cast(a.data as varchar(10))||' '||a.hora as timestamp) datahoraatual,
(select first 1 cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp) <
cast(cast(a.data as varchar(10))||' '||a.hora as timestamp)
order by cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
) t
order by
t.datahoraatual
Gostei + 2
29/05/2018
Reginaldo Souza
select
t.*,
datediff(second, t.datahoraanterior, t.datahoraatual) dif_segundos
from (
select
a.cdfil, a.nrrqu, a.serier, a.cdetapa, b.descricao,
cast(cast(a.data as varchar(10))||' '||a.hora as timestamp) datahoraatual,
(select first 1 cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp)
from fc12500 a2
where a2.nrrqu = a.nrrqu and
a2.cdopera = a.cdopera and
cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp) <
cast(cast(a.data as varchar(10))||' '||a.hora as timestamp)
order by cast(cast(a2.data as varchar(10))||' '||a2.hora as timestamp) desc) datahoraanterior
from
fc12500 a
inner join
fc12540 b on b.cdetapa = a.cdetapa
where
a.nrrqu = 6650 and
a.cdopera = 1
) t
order by
t.datahoraatual
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)