none
Propblemas com o RRS feed

  • Pergunta

  • eu estou com um problema. Preciso fazer uma qwery que retorne apenas os dados q se repetem para depois excluir os dados mais antigos...

    alguém poderia me ajudar.

    quinta-feira, 17 de abril de 2008 17:38

Todas as Respostas

  • Alex,

     

    Você poderia fazer algo assim:

     

    Code Snippet

    DELETE CTLUVAS2003

    WHERE LOTEPRODUCAO=lote and substring(convert(char(7),codproduto),1,3)='311'

    AND LOTEINTERNO IN (Select LoteInterno from CTLUVAS2003 Where LOTEPRODUCAO=@=lote

    Group by LOTEINTERNO Having Count(LoteInterno)>1)

     

     

     

    quinta-feira, 17 de abril de 2008 17:43
  • Boa Tarde,

     

    Veja se o exemplo abaixo o ajuda

     

    Code Snippet

    CREATE TABLE T (

    CPF CHAR(11) NOT NULL,

    Nome VARCHAR(50),

    DataCadastro SMALLDATETIME)

     

    INSERT INTO T VALUES ('11122233344', 'Cliente X', '20080102')

    INSERT INTO T VALUES ('11122233344', 'Cliente X', '20080103')

    INSERT INTO T VALUES ('44455566677', 'Cliente Y', '20080415')

    INSERT INTO T VALUES ('44455566677', 'Cliente Y', '20080417')

    INSERT INTO T VALUES ('77788899900', 'Cliente Z', '20080416')

     

    -- Recuperar os cadastros mais novos

    SELECT T1.CPF, T1.NOME, T1.DataCadastro

    FROM T AS T1

    INNER JOIN

    (SELECT CPF, NOME, MAX(DataCadastro) As DataRecente

    FROM T GROUP BY CPF, NOME) AS T2 ON T1.CPF = T2.CPF AND T1.DataCadastro = T2.DataRecente

     

    -- Excluir os cadastros mais antigos e deixar somente os mais novos

    DELETE FROM T

    WHERE NOT EXISTS (

    SELECT * FROM (

    SELECT CPF, NOME, MAX(DataCadastro) As DataRecente

    FROM T GROUP BY CPF, NOME) AS T2

    WHERE T.CPF = T2.CPF AND T.DataCadastro = T2.DataRecente)

     

    SELECT * FROM T

     

    DROP TABLE T

     

     

    [ ]s,

     

    Gustavo

    quinta-feira, 17 de abril de 2008 18:04