none
Duvida em SELECT RRS feed

  • Pergunta

  • Boa tarde!

    Preciso de uma ajuda, possuo um banco com 2 tabelas (Vendas e Contas). Uma venda pode gerar até 9 contas. Ocorreu a perda de algumas contas de muitas vendas, gerei um processo para lançar as contas, porém estou precisando de um relatório que me retorne as vendas que estão sem 1 ou mais contas.

    Tabela: Vendas ([Código da Venda], [Número de Parcelas]) | [Código da Venda] - Chave primaria

    Tabela: Contas ([Código da Entrada], [Número da Parcela]) | [Código da Entrada] - Chave estrangeira

    Acredito que essas informações sejam suficientes.

    Grato desde já!


    Dalto Blanco - Ciência da computação

    quinta-feira, 7 de fevereiro de 2013 18:26

Respostas

  • Boa tarde,

    Talvez existam outras alternativas melhores, mas experimente mais ou menos desta forma:

    with CTE_P as
    (
        select [Código da Venda], [Número de Parcelas], 1 as Parcela
        from Vendas
    
        union all
    
        select [Código da Venda], [Número de Parcelas], Parcela + 1
        from CTE_P
        where Parcela < [Número de Parcelas]
    )
    
    select * 
    from CTE_P as p
    where not exists 
                (select 1 from Contas as c
                 where 
                     c.[Código da Entrada] = p.[Código da Venda] and
                     c.[Número da Parcela] = p.Parcela)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 7 de fevereiro de 2013 18:52

Todas as Respostas

  • Boa tarde,

    Talvez existam outras alternativas melhores, mas experimente mais ou menos desta forma:

    with CTE_P as
    (
        select [Código da Venda], [Número de Parcelas], 1 as Parcela
        from Vendas
    
        union all
    
        select [Código da Venda], [Número de Parcelas], Parcela + 1
        from CTE_P
        where Parcela < [Número de Parcelas]
    )
    
    select * 
    from CTE_P as p
    where not exists 
                (select 1 from Contas as c
                 where 
                     c.[Código da Entrada] = p.[Código da Venda] and
                     c.[Número da Parcela] = p.Parcela)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 7 de fevereiro de 2013 18:52
  • Sou novo no SQL server e não estou sabendo utilizar esta rotina, poderia me auxiliar?

    Dalto Blanco - Ciência da computação

    sexta-feira, 8 de fevereiro de 2013 09:49
  • Acho que seria melhor você fazer um teste primeiro através do SQL Server Management Studio para ver se é obtido o resultado desejado.

    Não sei onde você pretende executar essa query, mas você pode adiciona-la da mesma forma como adiciona uma query simples qualquer.

    Dentro do SSMS você pode utilizar o botão "New Query" para adicionar e executar a query.

    Acho que o único detalhe é que se essa query vai ser executada dentro de outro script ou procedure após outros comandos, será necessário um ponto e vírgula (;) após o comando anterior ou antes do With.

    Se você não conseguir executar a query, informe onde tentou executar e qual mensagem de erro é exibida.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 8 de fevereiro de 2013 12:11