none
NÃO MOSTRAR VALORES DUPLICADOS NA CONSULTA

    Pergunta

  • Olá Amigos(as).

    estou com uma bronca pra resolver, tenho valores em duas tabelas e quero juntar em uma só tabela, estou obtendo os seguintes resultados.

    SELECT distinct A.ID, a.HORA, a.DATA, a.TOTAL, b.COMPROVANTE
    FROM SAIDA a
    inner join SAIDA_COMPROVANTE b
    on a.ID = b.ID_SAIDA
    WHERE B.COMPROVANTE NOT LIKE '%JARDIM%' AND A.DATA >= '01.01.2018' AND A.DATA <= '30.04.2018'
    order BY A.DATA desc

    RESULTADO:

                          

    '255488', '08:51:49', '30.04.2018', '21.88', '              MASTERCARD    

    '255488', '08:51:49', '30.04.2018', '21.88', '              MASTERCARD 

    '255487', '08:50:00', '30.04.2018', '10.99', '                  VISA

    '255487', '08:50:00', '30.04.2018', '10.99', '                  VISA

    SÓ QUE EU QUERIA VER APENAS UM REGISTRO SEM MOSTRAR OS DUPLICADOS.

    EXEMPLO DE COMO EU PRECISO:


    255488', '08:51:49', '30.04.2018', '21.88', '              MASTERCARD    

    '255487', '08:50:00', '30.04.2018', '10.99', '                  VISA

    AGRADEÇO SE PODEREM ME AJUDAR.

    quarta-feira, 16 de maio de 2018 14:55

Todas as Respostas

  • Boa tarde, ABRÃOHITO!

    Pelo resultado postado, aparentemente o campo "Comprovante" possui espaços em brancos, por conta disso, não é eliminado no distinct. A utilização das funções LTRIM e RTRIM, pode resolver seu problema:

    SELECT distinct A.ID, a.HORA, a.DATA, a.TOTAL, RTRIM(LTRIM(b.COMPROVANTE)) COMPROVANTE
    FROM SAIDA a
    inner join SAIDA_COMPROVANTE b
    on a.ID = b.ID_SAIDA
    WHERE B.COMPROVANTE NOT LIKE '%JARDIM%' AND A.DATA >= '01.01.2018' AND A.DATA <= '30.04.2018'
    order BY A.DATA desc

    quarta-feira, 16 de maio de 2018 16:32
  • Qual o motivo de existirem linhas aparentemente repetidas? Para analisar os dados, sugiro que execute o código abaixo:

    -- código #1
    set dateformat dmy;

    SELECT ID, count(*) as NVezes from SAIDA where DATA >= '01.01.2018' and DATA <= '30.04.2018' group by ID having count(*) > 1; SELECT B.ID_SAIDA, count(*) as NVezes from SAIDA as A
    inner join SAIDA_COMPROVANTE as B on A.ID = B.ID_SAIDA
    where B.COMPROVANTE NOT LIKE '%JARDIM%'
    AND A.DATA >= '01.01.2018' AND A.DATA <= '30.04.2018'
    group B.ID_SAIDA
    having count(*) > 1;



    e-mail       José Diz     Belo Horizonte, MG - Brasil


    quinta-feira, 17 de maio de 2018 19:54
    Moderador
  • Bom dia Mailson,

    não funcionou, dá o seguinte erro:

    Starting transaction...
    Preparing query: SELECT a.ID, a.ID_SAIDA, a.COMPROVANTE
    FROM SAIDA_COMPROVANTE a
    Prepare time: 0.000s
    Field #01: SAIDA_COMPROVANTE.ID Alias:ID Type:INTEGER
    Field #02: SAIDA_COMPROVANTE.ID_SAIDA Alias:ID_SAIDA Type:INTEGER
    Field #03: SAIDA_COMPROVANTE.COMPROVANTE Alias:COMPROVANTE Type:BLOB SUB_TYPE 1
    PLAN (A NATURAL)


    Executing...
    Done.
    7915 fetches, 0 marks, 583 reads, 0 writes.
    0 inserts, 0 updates, 0 deletes, 2 index, 3272 seq.
    Delta memory: 10208 bytes.
    Total execution time: 0.109s
    Script execution finished.
    Preparing query: SELECT distinct A.ID, a.HORA, a.DATA, a.TOTAL, RTRIM(LTRIM(b.COMPROVANTE)) COMPROVANTE
    FROM SAIDA a
    inner join SAIDA_COMPROVANTE b
    on a.ID = b.ID_SAIDA
    WHERE B.COMPROVANTE NOT LIKE '%JARDIM%' AND A.DATA >= '01.01.2018' AND A.DATA <= '30.04.2018'
    order BY A.DATA desc
    Error: *** IBPP::SQLException ***
    Context: Statement::Prepare( SELECT distinct A.ID, a.HORA, a.DATA, a.TOTAL, RTRIM(LTRIM(b.COMPROVANTE)) COMPROVANTE
    FROM SAIDA a
    inner join SAIDA_COMPROVANTE b
    on a.ID = b.ID_SAIDA
    WHERE B.COMPROVANTE NOT LIKE '%JARDIM%' AND A.DATA >= '01.01.2018' AND A.DATA <= '30.04.2018'
    order BY A.DATA desc )
    Message: isc_dsql_prepare failed

    SQL Message : -804
    An error was found in the application program input parameters for the SQL statement.

    Engine Code    : 335544569
    Engine Message :
    Dynamic SQL Error
    SQL error code = -804
    Function unknown
    RTRIM


    Total execution time: 0.016s

    sexta-feira, 18 de maio de 2018 15:01
  • o motivo é que a tabela  (saida_comprovante) gera 1 arquivo a cada nome impresso, como em todas as vendas no cartão imprime duas vezes logos vai ficar dois valores.

    testei esse comando e não deu certo também.

    sexta-feira, 18 de maio de 2018 15:04
  • Error: *** IBPP::SQLException ***
    Isso não é SQL Server, mas InterBase (ou Firebird).

    e-mail       José Diz     Belo Horizonte, MG - Brasil


    sexta-feira, 18 de maio de 2018 15:21
    Moderador