- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Relatório de Produtos Obsoletos
×
Linguagem de Programação ADVPL
Perguntas Relatório de Produtos Obsoletos
- maiara_
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 71
- Obrigados Recebidos: 0
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 2 semanas atrás - 11 anos 2 semanas atrás #18274
por kanaamlrr
Respondido por kanaamlrr no tópico Relatório de Produtos Obsoletos
Maiara,
acho que essa query deve funcionar.
faz um teste ai.
Talvez precise adicionar um left join com a SB1 para garantir os produtos que não tiveram nenhuma movimentação também.
Corrigindo a query, daquela forma poderia acontecer alguns problemas. de movimentação em uma das duas tabelas.
acho que essa query deve funcionar.
faz um teste ai.
Talvez precise adicionar um left join com a SB1 para garantir os produtos que não tiveram nenhuma movimentação também.
SELECT * FROM (
SELECT
DISTINCT D2_COD AS CODIGO FROM SD2110
GROUP BY D2_COD
HAVING MAX(D2_EMISSAO)<=CONVERT(CHAR,DATEADD(YY,-1,GETDATE()),112)
UNION ALL
SELECT
DISTINCT D1_COD AS CODIGO FROM SD1110
GROUP BY D1_COD
HAVING MAX(D1_EMISSAO)<=CONVERT(CHAR,DATEADD(YY,-1,GETDATE()),112)
) AS Q
GROUP BY CODIGO
HAVING COUNT(*) >1
Corrigindo a query, daquela forma poderia acontecer alguns problemas. de movimentação em uma das duas tabelas.
Ultima edição: 11 anos 2 semanas atrás por kanaamlrr.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 2 semanas atrás - 11 anos 2 semanas atrás #18275
por kanaamlrr
Respondido por kanaamlrr no tópico Relatório de Produtos Obsoletos
adicionei a condição para pegar produtos sem movimentações.
com base nisso você pode gerar seu relatório, mas não esqueça de tratar D_E_L_E_T_ e FILIAL
SELECT * FROM
(SELECT
DISTINCT D2_COD AS CODIGO FROM SD2110
GROUP BY D2_COD
HAVING MAX(D2_EMISSAO)<=CONVERT(CHAR,DATEADD(YY,-1,GETDATE()),112)
UNION ALL
SELECT
DISTINCT D1_COD AS CODIGO FROM SD1110
GROUP BY D1_COD
HAVING MAX(D1_EMISSAO)<=CONVERT(CHAR,DATEADD(YY,-1,GETDATE()),112)
) AS Q
GROUP BY CODIGO
HAVING COUNT(*) >1
UNION ALL
SELECT
DISTINCT B1_COD AS CODIGO FROM SB1070
LEFT JOIN SD1110 ON
B1_COD = D1_COD
LEFT JOIN SD2110 ON
B1_COD = D2_COD
WHERE D1_COD IS NULL AND
D2_COD IS NULL
com base nisso você pode gerar seu relatório, mas não esqueça de tratar D_E_L_E_T_ e FILIAL
Ultima edição: 11 anos 2 semanas atrás por kanaamlrr.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Relatório de Produtos Obsoletos
Tempo para a criação da página:0.108 segundos