wilhaods Postado Maio 25, 2011 Denunciar Share Postado Maio 25, 2011 (editado) Salve galera. Estou precisando de um auxílio que já procurei em todos os tópicos do forum e não encontrei.Estou com o seguinte problema. Bem difícil até então.Tenho o campo CARGA_HORARIA(Campo para salvar quantidade de horas complementares dos alunos, do tipo inteiro).Desejo pegar na tabela todos os registros que foram lançados para o aluno X e somar todos os valores contidos no campoCARGA_HORARIA.Exemplo...Tenho o aluno João com 147,40 Horas complementares no dia 17-01-2010Tenho o aluno João com 13,30 Horas complementares no dia 25-03-2010Somei as horas complementares dele e o resultado foi 160,70 ou seja (160H e 70 Min).Agora desejo somar os 70Min nas 160H. Porém não quero os minutos que sobrarem, pois desejo apenaso total de Horas complementares.Desde já agradeço a atenção...Abraços. Editado Maio 26, 2011 por wilhaods Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CAIO.EXE Postado Maio 25, 2011 Denunciar Share Postado Maio 25, 2011 cara,se sua querie sempre retornar 2 casas decimais você pode fazer utilizar a função RIGHT(CAMPO,posições) desta forma:select right(12.70,2);esta querie retorna apenas o 70 (2 posições contando da direita para esquerda)Há outra função que percorre o campo, procuram uma dweterminada string mas eu não me recordo qual é,se eu lembrar eu posto pra você. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wilhaods Postado Maio 25, 2011 Autor Denunciar Share Postado Maio 25, 2011 cara,se sua querie sempre retornar 2 casas decimais você pode fazer utilizar a função RIGHT(CAMPO,posições) desta forma:select right(12.70,2);esta querie retorna apenas o 70 (2 posições contando da direita para esquerda)Há outra função que percorre o campo, procuram uma dweterminada string mas eu não me recordo qual é,se eu lembrar eu posto pra você.Okk.. Eu vou tentar meu amigo.. Caso dê certo lhe falo...Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Maio 25, 2011 Denunciar Share Postado Maio 25, 2011 Uma dica: Outra coisa que você sempre tem q ver quando se tratar de HORAS: 1 hora são 60 minutos... Sendo assim, terá não somente que pegar as horas, mas somar 1 hora a cada 60 minutos completos. :.) CHARINDEX - retorna a posição da 1ª ocorrência do caracter pesquisado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wilhaods Postado Maio 26, 2011 Autor Denunciar Share Postado Maio 26, 2011 Uma dica: Outra coisa que você sempre tem q ver quando se tratar de HORAS: 1 hora são 60 minutos... Sendo assim, terá não somente que pegar as horas, mas somar 1 hora a cada 60 minutos completos. :.) CHARINDEX - retorna a posição da 1ª ocorrência do caracter pesquisado.Amigo.. Como funcionaria este charindex...??O meu campo é cargahoraria e ele tem 4 casas depois do ponto.charindex (cargahoraria, 2,??) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Maio 26, 2011 Denunciar Share Postado Maio 26, 2011 Bom dia, select CHARINDEX ('-','Teste - em horas ') Retorna a posição do caracter no string. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wilhaods Postado Maio 26, 2011 Autor Denunciar Share Postado Maio 26, 2011 cara,se sua querie sempre retornar 2 casas decimais você pode fazer utilizar a função RIGHT(CAMPO,posições) desta forma:select right(12.70,2);esta querie retorna apenas o 70 (2 posições contando da direita para esquerda)Há outra função que percorre o campo, procuram uma dweterminada string mas eu não me recordo qual é,se eu lembrar eu posto pra você.Pessoal obrigado, consegui resolver usei o select junto com o charindex...Caio e Fulvio me ajudaram bastante..... :D Fiz o seguinte...x = VALOR...Usei um CASE Somei a cada X,60 até X,99 somar + 1 à CARGAHORARIA caso a cada X,00 até x,59 continua CARGAHORARIADepois Usei um SUBSTRING para pegar o campo CARGAHORARIA (convertido em STRING), na posição CHARINDEX do ponto.Funcionou bacana...O código está abaixo caso queiram ver...*******************************SELECT 'Certificamos que ' + e.nome , sum(b.cargahoraria), case when right(convert(money,sum(b.cargahoraria)),2) between 60 and 99 then SUBSTRING(CONVERT(VARCHAR(10),(sum(b.cargahoraria)+1)),0,4) else SUBSTRING(CONVERT(VARCHAR(10),(convert(money,sum(b.cargahoraria)))) /* Posição que desejo pegar */ ,CHARINDEX('.',(CONVERT(VARCHAR(10),(sum(b.cargahoraria)+1))))- CHARINDEX('.',(CONVERT(VARCHAR(10),(sum(b.cargahoraria)+1)))) ,CHARINDEX('.',(CONVERT(VARCHAR(10),(sum(b.cargahoraria)+1))))) end horas FROM ealunos e ,uatvcompaluno b where b.mataluno=e.matricula group by e.nome, b.cargahorariaorder by 2 desc++++++++++++++++++++++++++ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
wilhaods
Salve galera. Estou precisando de um auxílio que já procurei em todos os tópicos do forum e não encontrei.
Estou com o seguinte problema. Bem difícil até então.
Tenho o campo CARGA_HORARIA(Campo para salvar quantidade de horas complementares dos alunos, do tipo inteiro).
Desejo pegar na tabela todos os registros que foram lançados para o aluno X e somar todos os valores contidos no campo
CARGA_HORARIA.
Exemplo...
Tenho o aluno João com 147,40 Horas complementares no dia 17-01-2010
Tenho o aluno João com 13,30 Horas complementares no dia 25-03-2010
Somei as horas complementares dele e o resultado foi 160,70 ou seja (160H e 70 Min).
Agora desejo somar os 70Min nas 160H. Porém não quero os minutos que sobrarem, pois desejo apenas
o total de Horas complementares.
Desde já agradeço a atenção...
Abraços.
Editado por wilhaodsLink para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.