Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rachid

Problemas ao trazer valores corretos

Recommended Posts

Boa Tarde,

 

 

 

Estou com problemas para selecionar a quantidade total de Horas e Minutos em um determinado intervalo de data ordenando por Operador, segue abaixo script do SQL que montei:

 

 

SELECT TB_OPERADOR.NOME, TB_ESPECIF.DESCRI,

sum(datepart(hh, TB_MAN.Tempo)) 

+sum(datepart(mi, TB_MAN.Tempo))/60 as [Hor H/Maq],

sum(datepart(mi, TB_MAN.Tempo)) % 60 as [Min H/Maq]

from TB_MAN, TB_OPERADOR, TB_ESPECIF

WHERE TB_MAN.Data >= '20110301' AND TB_MAN.Data <= '20110311'

AND TB_MAN.ESPECIF = TB_ESPECIF.COD

OR TB_MAN.Mec1 = TB_OPERADOR.COD

OR TB_MAN.Mec2 = TB_OPERADOR.COD

OR TB_MAN.Mec3 = TB_OPERADOR.COD

OR TB_MAN.Mec4 = TB_OPERADOR.COD

OR TB_MAN.Mec5 = TB_OPERADOR.COD

OR TB_MAN.Mec6 = TB_OPERADOR.COD

OR TB_MAN.Mec7 = TB_OPERADOR.COD

OR TB_MAN.Mec8 = TB_OPERADOR.COD

OR TB_MAN.Mec9 = TB_OPERADOR.COD

GROUP BY TB_OPERADOR.NOME, TB_ESPECIF.DESCRI

ORDER BY TB_ESPECIF.DESCRI, [Hor H/Maq] DESC, [Min H/Maq] DESC

 

Uso o SQL Server 2005.

 

 

 

Estou com problemas para somar quando verifico mais de uma coluna para comparar com outra tabela, parece que o banco perde a referência. O campo tempo e Data é do tipo DateTime.

 

Acho que o método de uso do "OR" está incorreto! Tenho que comparar mais de uma coluna para verificar registros iguais para soma.

 

Exemplo.:

 

 

 

Registro 1 -> Tempo = 2 Hrs | Mecânico1 = José, | Mecânico2 = Paulo | Mecânico3 = Roberto

 

Registro 2 -> Tempo = 1 Hrs | Mecânico1 = Paulo, | Mecânico2 = Roberto | Mecânico3 = NULL

 

 

 

Grupo

 

José = 3 Hrs

 

Paulo = 3 Hrs

 

Roberto = 2 Hrs

 

 

 

Como posso resolver?

 

 

 

Att,

 

Moacir Rachid

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

 

 

Estou com problemas para selecionar a quantidade total de Horas e Minutos em um determinado intervalo de data ordenando por Operador, segue abaixo script do SQL que montei:

 

 

SELECT TB_OPERADOR.NOME, TB_ESPECIF.DESCRI,

sum(datepart(hh, TB_MAN.Tempo)) 

+sum(datepart(mi, TB_MAN.Tempo))/60 as [Hor H/Maq],

sum(datepart(mi, TB_MAN.Tempo)) % 60 as [Min H/Maq]

from TB_MAN, TB_OPERADOR, TB_ESPECIF

WHERE TB_MAN.Data >= '20110301' AND TB_MAN.Data <= '20110311'

AND TB_MAN.ESPECIF = TB_ESPECIF.COD

OR TB_MAN.Mec1 = TB_OPERADOR.COD

OR TB_MAN.Mec2 = TB_OPERADOR.COD

OR TB_MAN.Mec3 = TB_OPERADOR.COD

OR TB_MAN.Mec4 = TB_OPERADOR.COD

OR TB_MAN.Mec5 = TB_OPERADOR.COD

OR TB_MAN.Mec6 = TB_OPERADOR.COD

OR TB_MAN.Mec7 = TB_OPERADOR.COD

OR TB_MAN.Mec8 = TB_OPERADOR.COD

OR TB_MAN.Mec9 = TB_OPERADOR.COD

GROUP BY TB_OPERADOR.NOME, TB_ESPECIF.DESCRI

ORDER BY TB_ESPECIF.DESCRI, [Hor H/Maq] DESC, [Min H/Maq] DESC

 

Uso o SQL Server 2005.

 

 

 

Estou com problemas para somar quando verifico mais de uma coluna para comparar com outra tabela, parece que o banco perde a referência. O campo tempo e Data é do tipo DateTime.

 

Acho que o método de uso do "OR" está incorreto! Tenho que comparar mais de uma coluna para verificar registros iguais para soma.

 

Exemplo.:

 

 

 

Registro 1 -> Tempo = 2 Hrs | Mecânico1 = José, | Mecânico2 = Paulo | Mecânico3 = Roberto

 

Registro 2 -> Tempo = 1 Hrs | Mecânico1 = Paulo, | Mecânico2 = Roberto | Mecânico3 = NULL

 

 

 

Grupo

 

José = 3 Hrs

 

Paulo = 3 Hrs

 

Roberto = 2 Hrs

 

 

 

Como posso resolver?

 

 

 

Att,

 

Moacir Rachid

 

 

Moacir, tenta isso;

 

SELECT TB_OPERADOR.NOME, TB_ESPECIF.DESCRI,

sum(datepart(hh, TB_MAN.Tempo)) 

+sum(datepart(mi, TB_MAN.Tempo))/60 as [Hor H/Maq],

sum(datepart(mi, TB_MAN.Tempo)) % 60 as [Min H/Maq]

from TB_MAN, TB_OPERADOR, TB_ESPECIF

WHERE TB_MAN.Data between '20110301' and '20110311' -- substituicao aqui, melhor usar o between

AND TB_MAN.ESPECIF = TB_ESPECIF.COD

--E sim alterar para  AND, em vez do OR.... 


AND TB_MAN.Mec1 = TB_OPERADOR.COD

AND TB_MAN.Mec2 = TB_OPERADOR.COD

AND TB_MAN.Mec3 = TB_OPERADOR.COD

AND TB_MAN.Mec4 = TB_OPERADOR.COD

AND TB_MAN.Mec5 = TB_OPERADOR.COD

AND TB_MAN.Mec6 = TB_OPERADOR.COD

AND TB_MAN.Mec7 = TB_OPERADOR.COD

AND TB_MAN.Mec8 = TB_OPERADOR.COD

AND TB_MAN.Mec9 = TB_OPERADOR.COD

GROUP BY TB_OPERADOR.NOME, TB_ESPECIF.DESCRI

ORDER BY TB_ESPECIF.DESCRI, [Hor H/Maq] DESC, [Min H/Maq] DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.