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

(Resolvido) Tirar agrupamento


Fernandinha

Pergunta

Olá pessoal!!

Tenho o seguinte select:

SELECT DISTINCT

Id,

TotalHoras = REPLICATE('0',2-LEN(HrRealizadas))+ CAST((SUM(HrRealizadas) % 60) AS VARCHAR(2)) + ':' + REPLICATE('0',2-LEN(MinRealizados))+ CAST((SUM(MinRealizados) % 60) AS VARCHAR(2))/*(sum(HrRealizadas)+sum(MinRealizados/60))*/

FROM FREQUENCIA

WHERE Id = 5

GROUP BY Id, HrRealizadas, MinRealizados

Ele está me retornando:

Id TotalHoras

11195 04:45

11195 36:00

Porém gostaria que ele me retornasse isso:

Id TotalHoras

11195 40:45

Alguém pode me dar um help, por favor?

Obrigada.

Editado por Fernandinha
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Fernandinha,

Olha se assim roda:

SELECT Id,
TotalHoras = REPLICATE('0',2-LEN(HrRealizadas))+ CAST((SUM(HrRealizadas) % 60) AS VARCHAR(2)) + ':' + REPLICATE('0',2-LEN(MinRealizados))+ CAST((SUM(MinRealizados) % 60) AS VARCHAR(2))/*(sum(HrRealizadas)+sum(MinRealizados/60))*/
FROM FREQUENCIA
WHERE Id = 5
GROUP BY Id

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fulvio!

Então, dessa forma eu já havia tentado, mas dá o seguinte erro:

Msg 8120, Level 16, State 1, Line 2

Column 'FREQUENCIA.HrRealizadas' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Msg 8120, Level 16, State 1, Line 2

Column 'FREQUENCIA.MinRealizados' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Link para o comentário
Compartilhar em outros sites

  • 0

Estava perguntando o tipo por que se conseguir substituir o replicate por outra função do sql com SUM, MAX, MIN, etc (ou até mesmo uma conversão), conseguirá realizar o total sem a necessidade de especificar os campos no group by.

você utilizando o replicate, há a possibilidade de sua concatenação retornar mais de 1 linha de dados. Desta forma o sql necessita a especificação da coluna no agrupamento.

Não tenho como postar um script pois não tenho exemplo dos dados manipulados.... caso queira postar...

Link para o comentário
Compartilhar em outros sites

  • 0

Segue exemplo:

CREATE TABLE #tabela (IdTurma INT, HrRealizadas INT, MinRealizados INT)

INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 4, 45)
INSERT INTO #tabela VALUES (11201, 5, 0)

SELECT IdTurma, Total=CAST(SUM(HrRealizadas)AS VARCHAR)+':'+cast(SUM(MinRealizados) AS VARCHAR) 
FROM #tabela GROUP BY IdTurma

Link para o comentário
Compartilhar em outros sites

  • 0

Ahm.... rs.... agora entendi!!!

Para estas situações, prefiro o case. Apesar da estrutura ficar maior, acho que fica mais legível.

Segue script:

CREATE TABLE #tabela (IdTurma INT, HrRealizadas INT, MinRealizados INT)

INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 12, 0)
INSERT INTO #tabela VALUES (11195, 4, 45)
INSERT INTO #tabela VALUES (11201, 5, 0)

SELECT IdTurma, CASE len(CAST(SUM(HrRealizadas)AS VARCHAR)) 
            WHEN 1 THEN  '0' + CAST(SUM(HrRealizadas)AS VARCHAR)
            ELSE CAST(SUM(HrRealizadas)AS VARCHAR) END + ':' +
            CASE len(cast(SUM(MinRealizados) AS VARCHAR))
            WHEN 1 THEN '0' + cast(SUM(MinRealizados) AS VARCHAR)
            ELSE cast(SUM(MinRealizados) AS VARCHAR) end
            AS Total 
FROM #tabela GROUP BY IdTurma

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...