SELECT ESPECÍFICOS DE TABELAS RELACIONADAS.

15/01/2015

0

Preciso de ajuda !!!!!!

Preciso fazer um relatório, e ainda não domino SQL , estou usando o SQL Server

Tenho várias tabelas com milhões de linhas, preciso de dados de algumas dessas tabelas, eu sempre usei o SGBD MySql e agora estou apanhando um pouco no SQL Server.

Seriam dados de equipamentos consertados, cada equipamento tem um número de série (idObj), e uma Ordem de Serviço (cdOS) e também o motivo do problema (dsproblema), montei esse select:
select obj.idObj1,loteobj.cdOS , problemaat.dsProblema
from obj,loteobj,OSItem, problemaat
where obj.cdtpobj = 136
and loteobj.cdObj = obj.cdObj
and OSItem .cdOS =LoteObj .cdOS
and problemaat.cdProblema = OSItem .cdProblema
order by obj.idObj1
Ele traz esses três campos, porém cada peça(idobj1) pode apresentar mais de um problema e o sistema adiciona na mesma tabela, DESSA FORMA : [img]http://arquivo.devmedia.com.br/forum/imagem/406453-20150115-114502.png[/img].

Porém eu preciso acrescentar mais um campo que é a data em que o reparo foi feito, que está em uma outra tabela chamada osItemProd o campo chama dtfim.

Eu preciso acresentar esse campo, relacionando com os dados que já tem nesse select, pois ele relaciona o numero de série, OS, E o problema.

porém a consulta toda dá em torno de 752687 linhas, para eliminar algumas linhas eu preciso trazer o dado somente da Ordem serviço (cdOS) MAIOR, ou seja preciso selecionar a data de reparo só da ultima OS, que seria a maior OS, pois é em ordem crescente.

Espero que tenha ficado claro, preciso muito de ajuda.. se alguém tiver uma luz de como fazer.

sei que vou ter que usar algo como group by, having...

mas não sei como aplicar.
Herbert Souza

Herbert Souza

Responder

Posts

15/01/2015

Isaac Jose

boa tarde vc vai criar uma tabela a parte para fazer o relatorio?
se for e é o que aconselho pois relatorios devem ter a menor quantidade de instruções possivel..
aconselho a criar a tabela para o relatorio que vc tem depois cria o campo para receber essa max os e faz update dele

segue um exemplo que eu tenho que faz o calculo de perc para vc ter como base
update a
set a.perc = c.perc
from relatorios.Tb_AcumProd_PFPJ_Dia_Por_Produto_VR a
inner join (select b.Coddep,b.BintAno,b.tintMes,b.Dia,b.Produto
,(MAX(ValorAcum)/(meta*QtdDiaMes)*100) as perc
from relatorios.Tb_AcumProd_PFPJ_Dia_Por_Produto_VR b
group by b.Coddep,b.BintAno,b.tintMes,b.Dia,b.Produto,QtdDiaMes ,Meta)as c on
a.Coddep = c.coddep and a.BintAno = c.BintAno and a.tintMes = c.tintMes
and a.Dia = c.Dia and a.Produto = c.Produto

espero que ajude. estou atrasado aqui se nao explicava melhor abraços
Responder

16/01/2015

Herbert Souza

Obrigado Isaac Consegui resolver!! =D
Responder

16/01/2015

Isaac Jose

que bom espero que o exemplo tenha ajudadoo :)
Responder

16/01/2015

Herbert Souza

E Ajudou =D
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar