 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Ago 06, 2018 5:16 pm Assunto: |
|
|
Fiquei com dúvidas sobre a questão, mas segue uma versão da query que talvez possa ser aprimorada para chegar ao resultado esperado:
| Código: | select
a.Cod,
a.CodDetMov as CodDetMovA,
a.QtdComp as QtdCompA,
b.CodDetMov as CodDetMovB,
b.QtdComp as QtdCompB
from
(
select
m.Cod,
d.Cod as CodDetMov,
count(*) as QtdComp,
@Linha:=case when @CodAntA = m.Cod then @Linha + 1 else 1 end as Linha,
@CodAntA:=m.Cod
from (SELECT @CodAntA:=0,@Linha:=0) as t, Movimento as m
inner join DetMovimento as d
on d.CodMov = m.Cod
inner join DetComplemento as c
on c.CodDetMov = d.Cod
where
d.CodProd = 10 and
d.Promocao = 'S'
group by
m.Cod,
d.Cod
) a
inner join
(
select
m.Cod,
d.Cod as CodDetMov,
count(*) as QtdComp,
@Linha:=case when @CodAntB = m.Cod then @Linha + 1 else 1 end as Linha,
@CodAntB:=m.Cod
from (SELECT @CodAntB:=0,@Linha:=0) as t, Movimento as m
inner join DetMovimento as d
on d.CodMov = m.Cod
inner join DetComplemento as c
on c.CodDetMov = d.Cod
where
d.CodProd = 20 and
d.Promocao = 'S'
group by
m.Cod,
d.Cod
) b
on b.Cod = a.Cod and b.Linha = a.Linha |
Espero que ajude |
|
| Voltar ao Topo |
|
 |
grsoft Aprendiz

Registrado: Segunda-Feira, 10 de Abril de 2006 Mensagens: 107
|
Enviada: Seg Ago 06, 2018 6:32 pm Assunto: |
|
|
estamos quase lá, só preciso que saia na mesma linha o CODDETMOVA + QtdCompA + CODDETMOVB + QtdCompB somente se alguma das quantidades for maior q 1
| imex escreveu: | Fiquei com dúvidas sobre a questão, mas segue uma versão da query que talvez possa ser aprimorada para chegar ao resultado esperado:
| Código: | select
a.Cod,
a.CodDetMov as CodDetMovA,
a.QtdComp as QtdCompA,
b.CodDetMov as CodDetMovB,
b.QtdComp as QtdCompB
from
(
select
m.Cod,
d.Cod as CodDetMov,
count(*) as QtdComp,
@Linha:=case when @CodAntA = m.Cod then @Linha + 1 else 1 end as Linha,
@CodAntA:=m.Cod
from (SELECT @CodAntA:=0,@Linha:=0) as t, Movimento as m
inner join DetMovimento as d
on d.CodMov = m.Cod
inner join DetComplemento as c
on c.CodDetMov = d.Cod
where
d.CodProd = 10 and
d.Promocao = 'S'
group by
m.Cod,
d.Cod
) a
inner join
(
select
m.Cod,
d.Cod as CodDetMov,
count(*) as QtdComp,
@Linha:=case when @CodAntB = m.Cod then @Linha + 1 else 1 end as Linha,
@CodAntB:=m.Cod
from (SELECT @CodAntB:=0,@Linha:=0) as t, Movimento as m
inner join DetMovimento as d
on d.CodMov = m.Cod
inner join DetComplemento as c
on c.CodDetMov = d.Cod
where
d.CodProd = 20 and
d.Promocao = 'S'
group by
m.Cod,
d.Cod
) b
on b.Cod = a.Cod and b.Linha = a.Linha |
Espero que ajude |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Ago 07, 2018 11:18 am Assunto: |
|
|
Experimente adicionar o Where no final:
| Código: | where
a.QtdComp > 1 or
b.QtdComp > 1 |
Espero que ajude |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|