Ir para conteúdo
Fórum Script Brasil
  • 0

comparar campos atualizados via SAP


apadovani11

Pergunta

Boa tarde pessoal,

Estou com uma dificuldade em comparar dois campos( LAST_LOGON com LOGIN_EMAIL), pois os mesmos são carregados através de uma integração do SAP.

Eu preciso retornar todos os registros que forem diferentes, mas entou com problemas pois a ferramente SAP algumas vezes insere o CORPORATE\ (DOMINIO) e outras vezes não na coluna LAST_LOGON.

LAST_LOGON LOGIN_EMAIL

CORPORATE\orlando.nery ORLANDO.NERY

orlando.nery orlando.nery

eu criei o seguinte codigo:

SELECT LOWER('CORPORATE\'+LOGIN_EMAIL), LOWER(LAST_LOGON)

FROM DEVICE2M2

WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL

AND ('CORPORATE\'+LOWER(CPM_LOGIN_EMAIL)) NOT LIKE (CPM_LAST_LOGON)

Com este eu consigo trazer os registros que possuem o CORPORATE\, mas não aqueles que não possuem e são iguais, como na linha 2 do exemplo acima.

Alguma ideia para que eu consiga retornar estes registros que são diferentes???

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Amigo,

Não sei se entendi o problema... mas vamos lá. Criei um exemplo logo abaixo utilizando uma temporária. Utilizei o comando replace para fazer a comparação.

OBS.: vi que no exemplo possuem informações com maiúscula e minuscula. Você terá que identificar a configuração na sua base (collation) se há diferença entre maiúscula e minuscula, ok?

Na base que fiz o script, não difere as maiusculas de minusculas. Se na sua base der diferença, poderá utilizar o comando UPPER para colocar todas as letras maiusculas para comparação. :.)

Segue exemplo:

CREATE TABLE #Teste (LAST_LOGON varchar(50),  LOGIN_EMAIL varchar(50))

INSERT INTO #Teste VALUES ('CORPORATE\orlando.nery', 'orlando.nery')
INSERT INTO #Teste VALUES ('orlando.nery', 'orlando.nery')

SELECT * FROM #Teste
WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL
AND (REPLACE (LAST_LOGON, 'CORPORATE\', '')) = LOGIN_EMAIL

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Amigo,

Não sei se entendi o problema... mas vamos lá. Criei um exemplo logo abaixo utilizando uma temporária. Utilizei o comando replace para fazer a comparação.

OBS.: vi que no exemplo possuem informações com maiúscula e minuscula. Você terá que identificar a configuração na sua base (collation) se há diferença entre maiúscula e minuscula, ok?

Na base que fiz o script, não difere as maiusculas de minusculas. Se na sua base der diferença, poderá utilizar o comando UPPER para colocar todas as letras maiusculas para comparação. :.)

Segue exemplo:

CREATE TABLE #Teste (LAST_LOGON varchar(50),  LOGIN_EMAIL varchar(50))

INSERT INTO #Teste VALUES ('CORPORATE\orlando.nery', 'orlando.nery')
INSERT INTO #Teste VALUES ('orlando.nery', 'orlando.nery')

SELECT * FROM #Teste
WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL
AND (REPLACE (LAST_LOGON, 'CORPORATE\', '')) = LOGIN_EMAIL
Valeu brother.......fiz algumas alterações e estou postando abaixo do modo como funcionou.....o seu acho que não funcionou porque não tinha o UPPER para efetuar a comparação....mas sua ideia foi perfeita, não conhecia esta função REPLACE.
CREATE TABLE #Teste (LAST_LOGON varchar(50),  LOGIN_EMAIL varchar(50))

INSERT INTO #Teste VALUES ('CORPORATE\orlando.nery', 'orlando.nery')
INSERT INTO #Teste VALUES ('orlando.nery', 'orlando.nery')

SELECT * FROM #Teste
WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL
AND (REPLACE (LAST_LOGON, 'CORPORATE\', '')) = LOGIN_EMAIL

SELECT UPPER(LOGIN_EMAIL) as LOGIN, UPPER(REPLACE(LAST_LOGON, 'CORPORATE\','')) AS LOGON_ALTERNADO
 FROM #Teste
WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL
 AND UPPER(REPLACE (LAST_LOGON, 'CORPORATE\', '')) <> LOGIN_EMAIL

Editado por apadovani11
Link para o comentário
Compartilhar em outros sites

  • 0

Ok, entendido... postei o mesmo exemplo, com as adaptações. Vê se é isto:

CREATE TABLE #Teste (LAST_LOGON varchar(50),  LOGIN_EMAIL varchar(50))

INSERT INTO #Teste VALUES ('FELIPE.MELO','CORPORATE\FELIPE.MELO')
INSERT INTO #Teste VALUES ('KELY.KEY','CORPORATE\KELY.KEY')
INSERT INTO #Teste VALUES ('VINHO.BRANCO','CORPORATE\VINHO.TINTO')
INSERT INTO #Teste VALUES ('ARTHUR.MOTTA','CORPORATE\ARTHUR.MOTTA')
INSERT INTO #Teste VALUES ('SERGIO.REIS','WALTER.NEGRAO')

SELECT * FROM #Teste
WHERE LOGIN_EMAIL IS NOT NULL AND LAST_LOGON IS NOT NULL
AND (REPLACE (LOGIN_EMAIL, 'CORPORATE\', '')) <> LAST_LOGON

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...