Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patrick Viçoso

Tabela temporária dentro de select

Recommended Posts

Pessoa boa tarde, é minha primeira postagem no grupo, porém não é a primeira pesquisa, uso muito do forum para ajudar no dia a dia e sempre ajuda. Hoje estou com uma construção simples de uma query que começou a complicar, teria umas ideias mas nao consigo aplicar.

Primeiramente digo que comecei a utilizar Oracle a pouco mais de 2 anos, porém aprofundando somente em 5.. 6 meses pra cá.

 

Tenho a seguinte query.:

---------------------------------------------------

SELECT DISTINCT    
         a.cd_atendimento,
         n.cd_produto,
         q.cd_mvto_estoque,
         q.hr_mvto_estoque,
         u.qt_movimentacao,
         q.tp_mvto_estoque,
         q.cd_setor
   

      FROM ...

  

          WHERE n.cd_produto = u.cd_produto
               AND a.cd_atendimento = q.cd_atendimento
               AND q.cd_mvto_estoque = u.cd_mvto_estoque
               AND n.cd_produto = 904
               AND a.cd_atendimento = 423766
       
---------------------------------------------------

CD_ATENDIMENTO;CD_PRODUTO;CD_MVTO_ESTOQUE;HR_MVTO_ESTOQUE;QT_MOVIMENTACAO;TP_MVTO_ESTOQUE;CD_SETOR
423766;904;897122;09.04.2017 19:50:45;1;C;56
423766;904;894984;06.04.2017 11:50:43;1;P;56
423766;904;895160;06.04.2017 13:48:28;2;P;56
423766;904;896796;08.04.2017 15:24:03;2;P;56
423766;904;897836;10.04.2017 14:30:51;2;P;56
423766;904;898383;11.04.2017 08:55:50;2;P;56
 

O negocio é que nessa saída eu preciso somar somente os TP_MVTO_ESTOQUE = P e subtrair da soma dos TP_MVTO_ESTOQUE = C .. eu consigo gerar algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

O negocio é que nessa saída eu preciso somar somente os TP_MVTO_ESTOQUE = P e subtrair da soma dos TP_MVTO_ESTOQUE = C .. eu consigo gerar algo do tipo?

 

tente algo assim


 

SUM((CASE WHEN TP_MVTO_ESTOQUE = 'P' THEN 1
          WHEN TP_MVTO_ESTOQUE = 'C'  THEN -1
          ELSE 0 END) * QT_MOVIMENTACAO) QT_MOVIMENTACAO

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

..deu certo.. para o que precisava.. apenas dei uma adaptada aqui interna..  porém to com uma dúvida em relação ao SUM, tenho 2 campos onde faço uma subtração, esses dois campos já são mencionados no SELECT antes da operação, mas quando faço o GROUP BY ele separa as linhas novamente :/

 

-------//-------

SELECT n.cd_atendimento,
       n.cd_produto,
       Sum(n.qt_saida),
       Sum(n.qt_devolvida), 
       Sum((n.qt_saida - n.qt_devolvida)) QT_CONSUMIDA
     
   FROM prod_atend n WHERE cd_atendimento = 423766 AND cd_produto = 579

   GROUP BY n.cd_atendimento,
            n.cd_produto,
            n.qt_saida

 

-------//-------

 

CD_ATENDIMENTO;CD_PRODUTO;SUM(N.QT_SAIDA);SUM(N.QT_DEVOLVIDA);QT_CONSUMIDA
423766;579;9;1;8
423766;579;8;1;7

 

Eu esperava o resultado assim.:

 

CD_ATENDIMENTO;CD_PRODUTO;SUM(N.QT_SAIDA);SUM(N.QT_DEVOLVIDA);QT_CONSUMIDA

423766;579;17;2;15

        

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, spernega disse:

Bom dia Patrick,

 

Tente executar sem colocar n.qt_saida no group by.

 

Juro que tava dando erro e pedia o qt_saida e o qt_devolvida, não sei se é pelo fato de ter um trunc antes (retirei), mas ai deu certo mesmo.. :tongue:

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Jefferson andre
      Saudacoes mestres, 
       
      preciso fazer um filtro em uma tabela e depois selecionar alguns clientes entao eu separei a tabela em uma temporaria, entao ao selecionar um determinado cliente preciso registrar que ele fara parte do reltaorio, isso pode ocorrer com varios clientes ou todos.
       
      Como proceder com um update fora de uma database ?
       
      Aqui eu uso pdo mas acho que nao funciona com tabelas temporarias.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.