Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo de Oliveira

SQL Complicada + FastReport

Recommended Posts

Galera

 

To com um problema com uma SQL que preciso fazer para um relatório, irei explicar abaixo:

 

Tenho duas tabelas MOVFECHAPEDIDOMATERIAIS e MOVFECHAPEDIDOSERVICOS

 

MOVFECHAPEDIDOMATERIAIS

CODIGO_FECHAPEDIDOMATERIAL

CODIGO_PEDIDOFABRICACAO

CODIGO_SERVICO

CODIGO_MATERIAL

QUANTIDADE

VALOR

TOTAL

 

MOVFECHAPEDIDOSERVICOS

CODIGO_FECHAPEDIDOSERVICO

CODIGO_PEDIDOFABRICACAO

CODIGO_SERVICO

CODIGO_MAQUINA

QUANTIDADE

VALOR

TOTAL

 

Dai preciso fazer uma instrução assim:

1 - Selecionar todos os MATERIAIS onde CODIGO_SERVICO e igual 1 (essa eu ja fiz)

 

SELECT FECMAT.CODIGO_SERVICO AS CODIGO_SERVICO_MAT,

SERMAT.DESCRICAO AS SERVICO_MAT,

FECMAT.CODIGO_MATERIAL AS CODIGO_MATERIAL_MAT,

MATMAT.DESCRICAO AS MATERIAL_MAT,

FECMAT.QUANTIDADE AS QUANTIDADE_MAT,

FECMAT.VALOR AS VALOR_MAT,

FECMAT.TOTAL AS TOTAL_MAT

FROM MOVFECHAPEDIDOMATERIAIS FECMAT

LEFT OUTER JOIN CADSERVICOS SERMAT ON SERMAT.CODIGO_SERVICO=FECMAT.CODIGO_SERVICO

LEFT OUTER JOIN CADMATERIAS MATMAT ON MATMAT.CODIGO_MATERIAL=FECMAT.CODIGO_MATERIAL

WHERE FECMAT.CODIGO_PEDIDOFABRICACAO=:CODIGO_PEDIDOFABRICACAO

AND FECMAT.CODIGO_SERVICO=1

 

2 - Preciso selecionar as demais MATERIAIS e todos os SERVICOS agrupando por CODIGO_SERVICO

 

Tipo preciso do layout

 

----------------------------------------------------------------------

MATERIA-PRIMA

----------------------------------------------------------------------

MATERIAL DO SERVICO=1 QTD X VAL = TOT

----------------------------------------------------------------------

DEMAIS SERVICOS E MATERIAS NESSA PARTE SO APARECE OS MATERIAIS ONDE CODIGO_SERVICO=1 (SQL 1)

----------------------------------------------------------------------

SERVICO=1

MAQUINA QTD X VAL = TOT NESSA PARTE SO APARECE OS SERVICOS ONDE CODIGO_SERVICO=1

---------------------------------------------------------------------

SERVICOS<>1

MATERIAIS QTD X VAL = TOT NESSA PARTE APARECE OS DEMAIS SERVICOS COM SEUS MATERIAIS UTILIZADOS

MAQUINA QTD X VAL = TOT E A MAQUINA COM QUANTIDADE BASEADO EM HORAS TRABALHADAS

---------------------------------------------------------------------

TOTAIS

 

 

Não sei como fazer para selecionar os registro dos demais servicos.

 

Já utilizaei esses parametros

 

SELECT DISTINCT

MOVMAT.CODIGO_PEDIDOFABRICACAO,

MATSER.DESCRICAO AS MAT_SERVICO,

MAT.DESCRICAO AS MAT_MATERIAL,

MOVMAT.QUANTIDADE AS MAT_QUANTIDADE,

MOVMAT.VALOR AS MAT_VALOR,

MOVMAT.TOTAL AS MAT_TOTAL,

SERSER.DESCRICAO AS SER_SERVICO,

MAQ.DESCRICAO AS SER_MAQUINA,

MOVSER.VALOR_FIXO AS SER_VALOR_FIXO,

MOVSER.QUANTIDADE AS SER_QUANTIDADE,

MOVSER.VALOR AS SER_VALOR,

MOVSER.TOTAL AS SER_TOTAL

FROM MOVFECHAPEDIDOMATERIAIS MOVMAT LEFT OUTER JOIN MOVFECHAPEDIDOSERVICOS MOVSER ON MOVMAT.CODIGO_PEDIDOFABRICACAO=MOVSER.CODIGO_PEDIDOFABRICACAO

LEFT OUTER JOIN CADSERVICOS MATSER ON MOVMAT.CODIGO_SERVICO=MATSER.CODIGO_SERVICO

LEFT OUTER JOIN CADSERVICOS SERSER ON MOVSER.CODIGO_SERVICO=SERSER.CODIGO_SERVICO

LEFT OUTER JOIN CADMATERIAS MAT ON MOVMAT.CODIGO_MATERIAL=MAT.CODIGO_MATERIAL

LEFT OUTER JOIN CADMAQUINAS MAQ ON MOVSER.CODIGO_MAQUINA=MAQ.CODIGO_MAQUINA

WHERE MOVMAT.CODIGO_PEDIDOFABRICACAO=:CODIGO_PEDIDOFABRICACAO

 

Peço um help, seja ele pelo site, e-mail, telefone ou ate remoto

Aguardo

 

Rodrigo de Oliveira

huelbert@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se ajuda

 

SELECT * 
FROM MOVFECHAPEDIDOMATERIAIS 
WHERE <CONDICAO>
UNION ALL 
SELECT * 
FROM MOVFECHAPEDIDOSERVICOS
WHERE MOVFECHAPEDIDOSERVICOS.CODIGO_SERVICO IN (SELECT MOVFECHAPEDIDOMATERIAIS.CODIGO_SERVICO 
                                                FROM MOVFECHAPEDIDOMATERIAIS 
                                                WHERE <CONDICAO>)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.