Comparação de dados de tabelas diferentes
05/05/2015
0
exemplos da tabelas:
tb1
usuario, consumo
tb2
usuario, ramal, setor, andar
Simone
Posts
05/05/2015
Marcos P
A posição analitica, com todos os registros, fica...
select tb2.usuario, tb2.ramal, tb2.setor, tb2.andar, tb1.consumo from tb1 inner join tb2 on ( tb1.usuario = tb2.usuario)
A posição sintética,fica...
select tb2.usuario, tb2.ramal, tb2.setor, tb2.andar, sum(tb1.consumo) as TotalConsumo from tb1 inner join tb2 on ( tb1.usuario = tb2.usuario) group by tb2.usuario, tb2.ramal, tb2.setor, tb2.andar
05/05/2015
Randrade
select tb1.usuario, tb1.consumo, tb2.ramal, tb2.setor, tb2.andar from tb1 where tb1.usuario = tb2.usuario
Qualquer dúvida, olhe este exemplo SqFiddle
05/05/2015
Simone
A posição analitica, com todos os registros, fica...
select tb2.usuario, tb2.ramal, tb2.setor, tb2.andar, tb1.consumo from tb1 inner join tb2 on ( tb1.usuario = tb2.usuario)
A posição sintética,fica...
select tb2.usuario, tb2.ramal, tb2.setor, tb2.andar, sum(tb1.consumo) as TotalConsumo from tb1 inner join tb2 on ( tb1.usuario = tb2.usuario) group by tb2.usuario, tb2.ramal, tb2.setor, tb2.andar
Esqueci de um grande detalhe, na coluna de consumo tem M(mega) e G(Giga), portanto o SUM não funciona não é?
exemplo:
Usuario consumo
u1 1.1 G
u2 1.0 G
u3 1.0 G
u4 998.7 M
u5 963.8 M
05/05/2015
Marcos P
Você pode tratar isso na aplicação, consolidando os dados obtidos na posição analítica.
Ou... você pode trabalhar com uma temporária transformando essas duas unidades de medida e um um valor numérico proporcional ( para, aí sim, aplicar o sum ).
06/05/2015
Simone
Você pode tratar isso na aplicação, consolidando os dados obtidos na posição analítica.
Ou... você pode trabalhar com uma temporária transformando essas duas unidades de medida e um um valor numérico proporcional ( para, aí sim, aplicar o sum ).
Valeu pela dica Marco P,
Utilizei o replace pra tratamento, só estou com duvida em como eliminar as duas letras M e G de uma vez.
select replace (consumo, 'M, ', '')
06/05/2015
Marcos P
select replace(replace(consumo, 'G', ''), 'M', '')
06/05/2015
Simone
SELECT replace (convert (int, replace (consumo, 'M', '')),'G',' ') Mensagem 245, Nível 16, Estado 1, Linha 2 Falha ao converter o varchar valor '377 081' para o tipo de dados int.
06/05/2015
Marcos P
13/05/2015
Simone
Oi Marcos surgiu outro problema aqui, tive que deixar esse de lado, mas então, eu criei uma tebela temporaria, e conseguir inserir os dados,
A minha dificuldade agora está sendo, deixar tudo em GB, que é como apresentamos no relatorio.
E no caso tem bites, giga e mega.
Por exemplo:
8 850 b
168.2 M
10.7 G
13/05/2015
Ceilton M
1 kbyte -> 1024 byte
1 M -> 1024 kbyte
1 G -> 1024 Mbytes
-- De Bytes para Megas
(Valb / 1024) / 1024
-- De Kbytes para Mbytes
ValK / 1024
-- De Gbytes para Mbytes
ValG * 1024
13/05/2015
Simone
Obrigada Cleiton.
Marcos, a duvida maior é como pegar os bytes, mega e transforma-los em GB separadamente.
13/05/2015
Marcos P
A estrutura mais comum, seriam de duas colunas : Valor e Unidade.
Se for isso, faça um case na sua query e aplique uma das fórmulas colocada pelo Cleiton, convertendo para a unidade desejada.
Exemplo
select Valor, Unidade, case when Unidade = 'MB' then Valor/1024 when Unidade = 'B' them Valor/(1024*1024) else Valor end as ValorGB :
Nesse formato, a conversão de Bytes para GigaBytes vai ficar bem estranha ( pois a divisão vai dar um número muito pequeno ).
Se sua estrutura não é essa, detalhe ela aqui...
13/05/2015
Simone
A estrutura mais comum, seriam de duas colunas : Valor e Unidade.
Se for isso, faça um case na sua query e aplique uma das fórmulas colocada pelo Cleiton, convertendo para a unidade desejada.
Exemplo
select Valor, Unidade, case when Unidade = 'MB' then Valor/1024 when Unidade = 'B' them Valor/(1024*1024) else Valor end as ValorGB :
Nesse formato, a conversão de Bytes para GigaBytes vai ficar bem estranha ( pois a divisão vai dar um número muito pequeno ).
Se sua estrutura não é essa, detalhe ela aqui...
Entendi Marcos, se for o caso eu mudo a estrutura.
A minha estrutura é a seguinte:
create table #temp( login varchar (30), nome varchar (100), andar varchar(6) ,consumo numeric) insert into #temp select tb2.LOGIN, tb2.USUARIO, tb2.ANDAR, replace(replace (convert (int, replace (consumo, 'M', '')),'G',' '),' ','')CONSUMO
13/05/2015
Marcos P
Clique aqui para fazer login e interagir na Comunidade :)