Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #100585
    Roldao
    Participante

      Boa Tarde pessoal , estou com uma pequena dificuldade é simples mas não sei o que faço.

      estou com uma tabela onde tenho os campos ( codigo_cliente, nome_cliente, saldo_valor, tipo_pagamento.

      segue um exemplo das informações da tabela abaixo

      codigo nome Saldo Pagamento
      1 Caio 1500 D
      1 Caio 2000 C

      estou tentando fazer uma consulta a onde eu busco pelo codigo do cliente, tenho que retorna o nome o saldo que seria o saldo do tipo de pagamento ‘C’ subraindo com saldo do tipo de pagamento ‘D’

      valew galera abraços

      #100586
      rman
      Participante

        [quote=”Roldao”:2zgk7x47]Boa Tarde pessoal , estou com uma pequena dificuldade é simples mas não sei o que faço.

        estou com uma tabela onde tenho os campos ( codigo_cliente, nome_cliente, saldo_valor, tipo_pagamento.

        segue um exemplo das informações da tabela abaixo

        codigo nome Saldo Pagamento
        1 Caio 1500 D
        1 Caio 2000 C

        estou tentando fazer uma consulta a onde eu busco pelo codigo do cliente, tenho que retorna o nome o saldo que seria o saldo do tipo de pagamento ‘C’ subraindo com saldo do tipo de pagamento ‘D’

        valew galera abraços[/quote]

        Segue a solução:


        CREATE TABLE MOVIMENTACAO(
        CODIGO_CLIENTE NUMBER NOT NULL,
        NOME_CLIENTE VARCHAR2(64) NOT NULL,
        SALDO_VALOR NUMBER(8,2) NOT NULL,
        TIPO_PAGAMENTO CHAR NOT NULL
        );

        INSERT INTO MOVIMENTACAO(CODIGO_CLIENTE,NOME_CLIENTE,SALDO_VALOR,TIPO_PAGAMENTO) VALUES(1,'CAIO',1500,'D');
        INSERT INTO MOVIMENTACAO(CODIGO_CLIENTE,NOME_CLIENTE,SALDO_VALOR,TIPO_PAGAMENTO) VALUES(1,'CAIO',2000,'C');
        INSERT INTO MOVIMENTACAO(CODIGO_CLIENTE,NOME_CLIENTE,SALDO_VALOR,TIPO_PAGAMENTO) VALUES(2,'JUNIOR',2500,'D');
        INSERT INTO MOVIMENTACAO(CODIGO_CLIENTE,NOME_CLIENTE,SALDO_VALOR,TIPO_PAGAMENTO) VALUES(2,'JUNIOR',3500,'C');

        COMMIT;

        SELECT NOME_CLIENTE,SUM(CASE WHEN TIPO_PAGAMENTO = 'D' THEN 1 * SALDO_VALOR WHEN TIPO_PAGAMENTO = 'C' THEN -1 * SALDO_VALOR END) SALDO
        FROM MOVIMENTACAO
        WHERE CODIGO_CLIENTE = 1
        GROUP BY NOME_CLIENTE;

        DROP TABLE MOVIMENTACAO;

        Analisando a solução, inicialmente um SUM() resolveria, mas tem o detalhe, se for ‘C’ é negativo, mas esta armazenado positivo, então basta um CASE WHEN para trocar o sinal para negativo, depois fazer um SUM(), para trocar o sinal pra negativo basta multiplicar por -1.

        #100596
        Roldao
        Participante

          muitissimo obrigado, é o que eu esstou precisando obrigado mesmo.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress