🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu
1) A consulta das marcações impares;
2) A "deleção lógica" dos registros impares;
Segue:
1) Para consultar as marcações impares:
------------------------------------------------------------------------------------------------
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
ORDER BY 1,2,3,4
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
ORDER BY 1,2,3,4
------------------------------------------------------------------------------------------------
2) Para a "Deleção Lógica" das marcações impares:
UPDATE SP8_U
SET SP8_U.D_E_L_E_T_='*'
FROM
SP8010 SP8_U
INNER JOIN
(
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
) SP8_R
ON SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
AND SP8_U.P8_MAT=SP8_R.P8_MAT
AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHERE SP8_U.D_E_L_E_T_=' '
SET SP8_U.D_E_L_E_T_='*'
FROM
SP8010 SP8_U
INNER JOIN
(
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
) SP8_R
ON SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
AND SP8_U.P8_MAT=SP8_R.P8_MAT
AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHERE SP8_U.D_E_L_E_T_=' '
OU
------------------------------------------------------------------------------------------------
MERGE INTO
SP8010 SP8_U
USING
(
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
) SP8_R
ON SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
AND SP8_U.P8_MAT=SP8_R.P8_MAT
AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHEN MATCHED THEN
UPDATE SET
SP8_U.D_E_L_E_T_='*';
MERGE INTO
SP8010 SP8_U
USING
(
SELECT SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
,SP8.P8_MAT
,SP8.P8_PAPONTA
,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
) SP8_R
ON SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
AND SP8_U.P8_MAT=SP8_R.P8_MAT
AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHEN MATCHED THEN
UPDATE SET
SP8_U.D_E_L_E_T_='*';
------------------------------------------------------------------------------------------------
Obs.:
1) Antes de efetuar qualquer operação que modifique os dados diretamente no SGBD efetue uma cópia da tabela;
2) Nem sempre os registros devem ser deletados. A melhor opção é identificar os funcionários com marcações impares e incluir a marcação faltante.
Comentários
Postar um comentário