ri_nepo Postado Março 2, 2006 Denunciar Share Postado Março 2, 2006 Olá Galera,quando eu uso essa query funcionaSELECT TOP 100 PERCENT dbo.TBL_QUIZ_USUARIO.RE_USUARIO, dbo.TBL_QUIZ_USUARIO.NOME_USUARIO, dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE, RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) / 60 AS CHAR(2))) + ':' + REVERSE(SUBSTRING(REVERSE('0' + RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) % 60 AS CHAR(2)))), 1, 2)) AS TEMPO, dbo.TBL_QUIZ_USER.DAT_INSERTFROM dbo.TBL_QUIZ_USER INNER JOIN dbo.TBL_QUIZ_USUARIO ON dbo.TBL_QUIZ_USER.ID_USER = dbo.TBL_QUIZ_USUARIO.ID_USUARIOGROUP BY dbo.TBL_QUIZ_USUARIO.RE_USUARIO, dbo.TBL_QUIZ_USUARIO.NOME_USUARIO, dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE, dbo.TBL_QUIZ_USER.NUM_MINUTES_1, dbo.TBL_QUIZ_USER.NUM_MINUTES_2, dbo.TBL_QUIZ_USER.NUM_MINUTES_3, dbo.TBL_QUIZ_USER.NUM_SECONDS_1, dbo.TBL_QUIZ_USER.NUM_SECONDS_2, dbo.TBL_QUIZ_USER.NUM_SECONDS_3, dbo.TBL_QUIZ_USER.DAT_INSERTORDER BY dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE DESC, TEMPO, dbo.TBL_QUIZ_USER.DAT_INSERTMas ai eu preciso que seja feito a soma das horas , ai eu usei o sum e deu o seguinte erro The sum or average aggregate operation cannot take a varchar data type as an argument.veja a string como ficou SELECT TOP 100 PERCENT dbo.TBL_QUIZ_USUARIO.RE_USUARIO, dbo.TBL_QUIZ_USUARIO.NOME_USUARIO, dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE, SUM(RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) / 60 AS CHAR(2)))) + ':' + REVERSE(SUBSTRING(REVERSE('0' + RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) % 60 AS CHAR(2)))), 1, 2)) AS TEMPO, dbo.TBL_QUIZ_USER.DAT_INSERTFROM dbo.TBL_QUIZ_USER INNER JOIN dbo.TBL_QUIZ_USUARIO ON dbo.TBL_QUIZ_USER.ID_USER = dbo.TBL_QUIZ_USUARIO.ID_USUARIOGROUP BY dbo.TBL_QUIZ_USUARIO.RE_USUARIO, dbo.TBL_QUIZ_USUARIO.NOME_USUARIO, dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE, dbo.TBL_QUIZ_USER.NUM_MINUTES_1, dbo.TBL_QUIZ_USER.NUM_MINUTES_2, dbo.TBL_QUIZ_USER.NUM_MINUTES_3, dbo.TBL_QUIZ_USER.NUM_SECONDS_1, dbo.TBL_QUIZ_USER.NUM_SECONDS_2, dbo.TBL_QUIZ_USER.NUM_SECONDS_3, dbo.TBL_QUIZ_USER.DAT_INSERTORDER BY dbo.TBL_QUIZ_USER.NUM_TOTAL_SCORE DESC, TEMPO, dbo.TBL_QUIZ_USER.DAT_INSERTquem puder ajudar eu agredeçoabraçosRicardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 2, 2006 Denunciar Share Postado Março 2, 2006 a formula q esta dentro do sum() deve estar trazendo um valor varchar. verifique, pois você so pode somar valores numericos, é logico.execute o primeiro select q você vez, e veja se todos os valores q você vai dar sum são realmente numericos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ri_nepo Postado Março 2, 2006 Autor Denunciar Share Postado Março 2, 2006 É verdade isso realmente está acontecendo , mas como eu deveria fazer para ele dar um sum somente nos valores númericosveja por favor a query abaixo SUM(RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) / 60 AS CHAR(2)))) + ':' + REVERSE(SUBSTRING(REVERSE('0' + RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) % 60 AS CHAR(2)))), 1, 2)) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 2, 2006 Denunciar Share Postado Março 2, 2006 faz um tempo q não mexo com sql então não lembro. mas no access, se você puser val() funciona. Ele vai somar todos os numericos, e os outros ele faz como se fossem zero. tente assim:SUM(VAL(RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) / 60 AS CHAR(2)))) + ':' + REVERSE(SUBSTRING(REVERSE('0' + RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) % 60 AS CHAR(2)))), 1, 2))) se não funcionar, tente verificar as funcoes do sql, de uma olhada no help, q deve ter uma funcao igual ao val. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruno villas Postado Março 3, 2006 Denunciar Share Postado Março 3, 2006 VAL() não funciona...Tente usar um cast(expressão as float) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ri_nepo Postado Março 3, 2006 Autor Denunciar Share Postado Março 3, 2006 O val não funcionoucomo eu faria no exemplo que você passou , assim ?(RTRIM(CAST(SUM((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) / 60 AS CHAR(2)))) + ':' + REVERSE(SUBSTRING(REVERSE('0' + RTRIM(CAST(((dbo.TBL_QUIZ_USER.NUM_MINUTES_1 + dbo.TBL_QUIZ_USER.NUM_MINUTES_2 + dbo.TBL_QUIZ_USER.NUM_MINUTES_3) * 60 + dbo.TBL_QUIZ_USER.NUM_SECONDS_1 + dbo.TBL_QUIZ_USER.NUM_SECONDS_2 + dbo.TBL_QUIZ_USER.NUM_SECONDS_3) % 60 AS CHAR(2)))), 1, 2))) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruno villas Postado Março 6, 2006 Denunciar Share Postado Março 6, 2006 Esse teu select tá muito complexo pra eu tentar entender segunda de manhã... rsrsSe não der vá tentando por partes, primeiro faz o select sem o sum(), veja se sua lógica está certa para cada linha, o tipo de dado que retorna, depois faça o cast e o sum... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ri_nepo
Olá Galera,
quando eu uso essa query funciona
Mas ai eu preciso que seja feito a soma das horas , ai eu usei o sum e deu o seguinte erro
The sum or average aggregate operation cannot take a varchar data type as an argument.
veja a string como ficou
quem puder ajudar eu agredeço
abraços
Ricardo
Link 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.