Usuário com melhor resposta
Dividir dados de uma Tabela relacionados a outra tabela com critérios

Pergunta
-
Possuo 2 tabelas na seguinte estrutura
<style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style>TABELA 1 TABELA 2 VERBA VALOR $ CARGO VERBA QTD PESSOAS CARGO INSS 5000 AJUDANTE SALÁRIO 3 AJUDANTE VR 600 AJUDANTE SALÁRIO 12000 AJUDANTE Preciso trazer a média por função do total de pessoas que possuem naquele cargo, entretanto a verba associada na tabela 2 é somente salário, quando faço a divisão a média acontece somente para a média de salário e os demais fatores ficam zerados.
Existe a possibilidade de replicar os valor da tabela 2 para os demais campos da tabela 1 para realizar a divisão ? ou no momento de dividir colocar um critério da verba ?
Resultado Atual
<style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style>RESULTADO FINAL VERBA MÉDIA CARGO INSS 0 AJUDANTE VR 0 AJUDANTE SALÁRIO 4000 AJUDANTE Resultado que quero obter
<style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style>RESULTADO FINAL VERBA MÉDIA CARGO INSS 1667 AJUDANTE VR 200 AJUDANTE SALÁRIO 4000 AJUDANTE por gentileza alguém pode ajudar ?
Respostas
-
Boa noite,
Não entendi por que existe o campo verba na tabela 2. No caso um join só pelo cargo já não resolveria?
SELECT TAB1.VERBA,VALOR / QTD , TAB1.CARGO FROM TAB1 JOIN TAB2 ON TAB1.CARGO = TAB2.CARGO
"computadores fazem arte, artistas fazem dinheiro"
- Marcado como Resposta Guilherme Macedo S segunda-feira, 26 de junho de 2017 13:02
Todas as Respostas
-
Boa noite,
Experimente mais ou menos dessa forma:
select t1.Verba, t1.Valor / coalesce ((select top(1) t2.QtdPessoas from Tabela2 as t2 where t2.Cargo = t1.Cargo and t2.Verba = t1.Verba), (select top(1) t2.QtdPessoas from Tabela2 as t2 where t2.Cargo = t1.Cargo)) as Media, t1.Cargo from Tabela1 as t1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Editado gapimex quinta-feira, 22 de junho de 2017 02:22
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de junho de 2017 00:11
-
Seque uma outra abordagem
DECLARE @Tabela1 TABLE ( Verba VARCHAR(10) NOT NULL, Valor DECIMAL(18,2), Cargo VARCHAR(30) ) DECLARE @Tabela2 TABLE ( Verba VARCHAR(10) NOT NULL, QuantiPessoas INT, Cargo VARCHAR(30) ) INSERT INTO @Tabela1 ( Verba, Valor, Cargo ) VALUES ( 'INSS',5000,'AJUDANTE' ),( 'VR',600,'AJUDANTE' ),( 'SALÁRIO',12000,'AJUDANTE' ) INSERT INTO @Tabela2 ( Verba, QuantiPessoas, Cargo ) VALUES ( 'VERBA', 3, 'AJUDANTE' ); WITH Dados AS ( SELECT T.Verba , T.Valor , T.Cargo, QuantPessoa.QuantiPessoas FROM @Tabela1 AS T CROSS APPLY ( SELECT TOP 1 T2.QuantiPessoas FROM @Tabela2 AS T2 WHERE T2.Cargo = T.Cargo ) QuantPessoa ) SELECT R.Verba , R.Valor , R.Cargo , R.QuantiPessoas, Media = CAST((R.Valor / R.QuantiPessoas) AS DECIMAL(18,2) ) FROM Dados R
Wesley Neves
wesley.si.neves@gmail.com
Brasilia-DF
MTA-SQL Server
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"Wesley Neves
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de junho de 2017 00:11
-
Boa noite,
Não entendi por que existe o campo verba na tabela 2. No caso um join só pelo cargo já não resolveria?
SELECT TAB1.VERBA,VALOR / QTD , TAB1.CARGO FROM TAB1 JOIN TAB2 ON TAB1.CARGO = TAB2.CARGO
"computadores fazem arte, artistas fazem dinheiro"
- Marcado como Resposta Guilherme Macedo S segunda-feira, 26 de junho de 2017 13:02
-
Bom dia,
Por falta de retorno esta thread esta encerrada !
Por gentileza, caso necessário abra uma nova thread.
Atenciosamente,
Guilherme Macedo S
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
TechNet Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.