Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Selecionar números depois do ponto


wilhaods

Pergunta

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 wilhaods
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

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ê.

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0
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,??)

Link para o comentário
Compartilhar em outros sites

  • 0
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 CARGAHORARIA

Depois

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.cargahoraria

order by 2 desc

++++++++++++++++++++++++++

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...