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

Resumo de uma consulta


GnRSlash

Pergunta

Galera tenho uma dúvida e eu gostaria de saber como fazer isso no SQL e se é possível fazer no Access também:

Tenho as seguintes tabelas:

- Ordens (é o cadastro de ordens de produção)

- Tempos (são os apontamentos dos tempos gastos em cada ordem de produção, por item e por usuário)

- Usuários (cadastro de usuários)

Vou exemplificar o que eu quero assim fica mais fácil de entender do que ficar analisando o código SQL rs

Fiz a seguinte consulta básica:

SELECT O.Ordem, O.Item, O.Descricao, O.Qtde, U.Nome, Sum(T.Tempo) AS [TT], TT/Qtde as TP,

FROM Ordens O, Tempos T, Usuarios U

WHERE O.idop = T.idop and T.iduser=U.iduser AND ORDEM='12345'

GROUP BY O.Ordem, O.Item, O.Descricao, U.Nome, O.Qtde;

A consulta acima me retornou o seguinte resultado:

OP Item Descrição Qtde Nome Tempo Total Tempo Unit

S1280702001 0723120007787 EJA530A-ECS4N-02NF/KU2 5 CLEIDE 3296 659.2

S1280702001 0723120007787 EJA530A-ECS4N-02NF/KU2 5 SÔNIA 3113 622.6

Até aqui ok, mas eu queria que me retornasse a somatória dos tempos TT, ou seja, 3296 + 3113 = 6409

Pensei em fazer isso criando uma segunda consulta que soma o resultado da coluna TT da primeira, mas será que não dá pra fazer tudo em uma só consulta?

valeu pessoal!

†GnR† Slash

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Amigo...

Estava dando uma olhada no script, e fiquei com uma dúvida. rs.

Entendi o q está querendo fazer, mas quando você utiliza o GROUP BY, o retorno é um agrupamento simples dos campos. A dúvida: Sum(T.Tempo) AS [TT] retorna a soma correta do campo? Fiz um exemplo logo abaixo, pra entender o q estou querendo explicar...

-- criação da tabela

create table #tmp (ordem int, valor int)

-- inserção dos dados

insert into #tmp (ordem, valor) values (12345, 3296)

insert into #tmp (ordem, valor) values (12345, 3113)

-- esse select faz a soma

select ordem, sum(valor) from #tmp where ordem=12345 group by ordem

-- esse select não faz a soma, pois o campo q possui o valor está na clausula group by

select ordem, sum(valor) from #tmp where ordem=12345 group by ordem, valor

Dá uma olha no group by. Mas caso a estrutura do GROUP BY não possa ser alterada, pois os dados tem q estar agrupados desta forma, pode utilizar a função COMPUTE. Exemplo:

select ordem, valor from #tmp group by ordem, valor COMPUTE SUM(valor)

OBS.: roda todos os select´s e dá uma olhada como ficam os resultados. Perceba q no ultimo select, retirei o sum do campo valor, pois senão dá erro... :.)

Testa aí e depois me fala. Espero q ajude...

Link para o comentário
Compartilhar em outros sites

  • 0

cara muito, mas muito mais facil que isso é usar um UNION

--sua consulta

SELECT convert(varchar,O.Ordem), O.Item, O.Descricao, O.Qtde, U.Nome, Sum(T.Tempo) AS [TT], TT/Qtde as TP

FROM Ordens O, Tempos T, Usuarios U

WHERE O.idop = T.idop and T.iduser=U.iduser AND ORDEM='12345'

GROUP BY O.Ordem, O.Item, O.Descricao, U.Nome, O.Qtde

UNION

--total

SELECT 'TOTAL', '', '', '', '', Sum(T.Tempo) AS [TT], ''

FROM Ordens O, Tempos T, Usuarios U

WHERE O.idop = T.idop and T.iduser=U.iduser AND ORDEM='12345'

suas unicas preocupaçoes devem ser:

- A quantidade de colunas devem ser a mesma nas duas consultas;

- Deve respeitar o tipo de cada coluna int com int e char com char;

- manter as mesmas condições nas duas querys, como na primeira consulta voce definiu que a ORDEM deve ser igual a 12345 a segunda query tambem deve somar somente as ORDEM igual a 12345.

Espero ter ajudado.

ultimamente estou participando pouco do forum

qualquer coisa mande email para caio_cardoso87@hotmail que caso possa ajudar responderei com muito prazer.

Editado por CAIO.EXE
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,8k
×
×
  • Criar Novo...