Problem with query. bring

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Post Reply
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Posts: 75
Joined: Mon, 19 Mar 2012 2:28 pm

Guys, good afternoon!

I have a big problem. I have to make a query where you get the movement of stock and last column show the balance. line the line.

Ex:

Select all

produto   |  quantidade   |   saldo 
60006          188             188 
60006           -8             180 
60006          -80             100. 
** Where the positive value indicates the product entry and the negative exit.

I'vê tried using a case to hold the bill but not right. Can someone help me?

Thanks
FernandesRE
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Posts: 11
Joined: Thu, 08 Jan 2015 9:22 pm

All right, Douglas?

Try as follows:

Select all

 
select produto, quantidade, 
sum(quantidade) OVER (partition BY produto ORDER BY rownum ) saldo 
from produto  
order by produto 
You can change the order by ...ORDER BY rownum... I left the rownum But I imagine you will prefer some date from the table.

[] s
Rodrigo
User avatar
dr_gori
Moderador
Moderador
Posts: 5024
Joined: Mon, 03 May 2004 3:08 pm
Location: Portland, OR USA
Contact:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Select all

CREATE TABLE THOMAS1( produto number, ordem number, quantidade number); 
INSERT INTO thomas1 VALUES (60006, 1, 188); 
INSERT INTO thomas1 VALUES (60006, 2,  -8); 
INSERT INTO thomas1 VALUES (60006, 3, -80); 
to using the Order field to set which order will add.

Select all

select  
  produto 
, ordem 
, quantidade   
, SUM(quantidade) over (partition by null order by ordem)  ant 
from thomas1 
Exit:

Select all

   PRODUTO      ORDEM QUANTIDADE        ANT 
---------- ---------- ---------- ---------- 
     60006          1        188        188 
     60006          2         -8        180 
     60006          3        -80        100 
  
SQL> 
Read this document to learn more about analytical functions: http://en.glufke.net/oracle/download/fu ... TICAS.html
User avatar
dr_gori
Moderador
Moderador
Posts: 5024
Joined: Mon, 03 May 2004 3:08 pm
Location: Portland, OR USA
Contact:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Ops, now that I saw that Fernandesre had already answered: Oops:
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Posts: 75
Joined: Mon, 19 Mar 2012 2:28 pm

Good morning guys ....

Thanks for the help, when I get to my job I'll test.

Then put the result here ..: lol:
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Posts: 75
Joined: Mon, 19 Mar 2012 2:28 pm

Personally it was almost right. But I must be doing something wrong for the values ??do not hit. I'll post my code here. So you better understand.

Select all

 
SELECT data 
            , documento 
            , ds_produto produto 
            , ds_unidade unidade 
            , operacao 
            , quantidade 
            , ds_estoque estoque_origem 
            , Upper(ds_destino) estoque_destino 
            ,SUM(quantidade) OVER (PARTITION BY NULL ORDER BY DATA)SALDO  
  FROM ( 
 
-----------------------------CONTAGENS DE ESTOQUE---------------------------------------------------------------------- 
 
SELECT   
   Itcontagem.Cd_produto Cd_produto 
  ,Produto.Ds_produto Ds_produto 
  ,dbamv.verif_ds_unid_prod(ITCONTAGEM.CD_PRODUTO) Ds_unidade 
  ,Sum(( Nvl(Itcontagem.Qt_estoque,0) + 
   Nvl( Itcontagem.Qt_estoque_doado,0) + 
   Nvl(Itcontagem.Qt_Kit,0) ) * UNI_PRO.VL_FATOR ) / dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO) Quantidade 
  ,Trunc(Contagem.Dt_geracao) Data 
  ,Contagem.Hr_geracao Hora 
  ,Contagem.Cd_contagem Documento 
  ,'Contagem - ' || Estoque.Ds_estoque Ds_destino 
  ,'Contagem' Operacao 
  ,0 Valor 
  ,Estoque.Cd_estoque Cd_estoque 
  ,Estoque.Ds_estoque Ds_estoque 
  ,dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO) Vl_fator 
  ,'1' Tp_ordem 
  ,'N' Sn_consignado 
  ,Produto.Sn_Consignado Produto_Sn_Consig 
  FROM  
      Dbamv.Itcontagem  Itcontagem 
     ,Dbamv.Contagem    Contagem 
     ,Dbamv.Produto     Produto 
     ,Dbamv.Uni_pro     Uni_pro 
     ,Dbamv.Estoque     Estoque 
                WHERE 
    Trunc(contagem.dt_geracao) BETWEEN To_Date('27/12/2014','dd/mm/yyyy') AND To_Date('31/12/2014','dd/mm/yyyy') 
AND produto.cd_produto  IN(104010,104011,101001,199513,113002,105001,112014,116006,113014,113010,310006,106052,112015,103018,112013,110005,300018,130001,106061,222016,140006,300020, 111023,102020,132004,102003,102013,106037,102014,102004,102010,102011,199433,199430,199336)      
 AND estoque.cd_estoque = 1 
AND Itcontagem.Cd_produto    = Produto.Cd_produto 
AND Itcontagem.Cd_contagem   = Contagem.Cd_contagem 
AND Itcontagem.Cd_uni_pro    = Uni_pro.Cd_uni_pro 
AND Contagem.Cd_estoque      = Estoque.Cd_estoque 
AND Estoque.Cd_Multi_empresa = 3 
AND CONTAGEM.TP_CONTAGEM IN ( 'G', 'S' ) 
AND PRODUTO.cd_produto       = 130001 
GROUP BY Itcontagem.Cd_produto, Produto.Ds_produto, Produto.Vl_custo_medio, dbamv.verif_ds_unid_prod(ITCONTAGEM.CD_PRODUTO), Contagem.Dt_geracao, Contagem.Hr_geracao 
        ,Contagem.Cd_contagem,Estoque.Cd_estoque,Estoque.Ds_estoque,dbamv.verif_vl_fator_prod(ITCONTAGEM.CD_PRODUTO),Produto.Sn_Consignado 
 
UNION ALL 
 
-----------------------------MOVIMENTAÇÕES DE ESTOQUE---------------------------------------------------------------------- 
 
SELECT  
      Itmvto_estoque.Cd_produto cd_produto 
     ,Produto.Ds_produto ds_produto 
     ,VERIF_DS_UNID_PROD(Itmvto_estoque.Cd_produto ) Ds_Unidade 
     ,Sum(Decode( Mvto_estoque.Tp_mvto_estoque,'D', Itmvto_estoque.Qt_movimentacao,'C' , Itmvto_estoque.Qt_movimentacao, 
      Itmvto_estoque.Qt_movimentacao * -1 ) * uni_pro.vl_fator/ 
      dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto))  Quantidade 
     ,Trunc(Mvto_estoque.Dt_mvto_estoque) Data 
     ,Mvto_estoque.Hr_mvto_estoque Hora 
     ,Mvto_estoque.Cd_mvto_estoque Documento 
     ,Initcap(Nvl( Paciente.Nm_paciente, 
      Decode(Mvto_estoque.Tp_mvto_estoque, 'T', Estoque_destino.Ds_estoque, 'B', 'Tombamento Patrimonio','E',Fornecedor.Nm_fornecedor, Setor.Nm_setor ) ) ) Ds_destino 
     ,Initcap(Decode( Mvto_estoque.Tp_mvto_estoque, 
               'X', 'Baixa De Produtos', 
               'S', 'Saída Setor'   , 
               'B', 'Tombamento' , 
               'P', 'Saída Paciente'   , 
               'D', 'Devol. De Setor'  , 
               'C', 'Devol. De Paciente' , 
               'T', 'Transf. De Estoque ', 
               'M', 'Manipul.  Produtos' , 
               'O', 'Doação  Produtos', 
               'E', 'Saída De Empréstimo', 
               'R','Transf. Empresas', 
               'V', 'Venda De Produtos' , 
               'N','Devolução De Vendas')) Operacao 
     ,0 Valor 
     ,Estoque.Cd_estoque Cd_estoque 
     ,Estoque.Ds_estoque Ds_estoque 
     ,dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto) Vl_fator 
     ,'3' Tp_ordem 
     ,'N' Sn_consignado 
     ,Produto.Sn_Consignado Produto_Sn_Consig 
                From Dbamv.Mvto_estoque   Mvto_estoque 
     , Dbamv.Itmvto_estoque Itmvto_estoque 
     , Dbamv.Produto        Produto 
     , Dbamv.Uni_pro        Uni_pro 
     , Dbamv.Atendime       Atendimento 
     , Dbamv.Paciente       Paciente 
     , Dbamv.Setor          Setor 
     , Dbamv.Estoque        Estoque 
     , Dbamv.Estoque        Estoque_destino 
     , Dbamv.Fornecedor     Fornecedor 
   Where Trunc(mvto_estoque.dt_mvto_estoque) BETWEEN To_Date('27/12/2014','dd/mm/yyyy') AND To_Date('31/12/2014','dd/mm/yyyy') 
   AND produto.cd_produto  IN(104010,104011,101001,199513,113002,105001,112014,116006,113014,113010,310006,106052,112015,103018,112013,110005,300018,130001,106061,222016,140006,300020, 111023,102020,132004,102003,102013,106037,102014,102004,102010,102011,199433,199430,199336)      
   AND estoque.cd_estoque = 1 
   And Itmvto_estoque.Cd_produto       = Produto.Cd_produto 
   And Itmvto_estoque.Cd_mvto_estoque  = Mvto_estoque.Cd_mvto_estoque 
   And Itmvto_estoque.Cd_uni_pro       = Uni_pro.Cd_uni_pro 
   And Mvto_estoque.Cd_atendimento     = Atendimento.Cd_atendimento (+) 
   And Atendimento.Cd_paciente         = Paciente.Cd_paciente (+) 
   And Mvto_estoque.Cd_setor           = Setor.Cd_setor(+) 
   And Mvto_estoque.Cd_estoque_destino =  Estoque_destino.Cd_estoque(+) 
   And Itmvto_estoque.Cd_uni_pro       =  Uni_pro.Cd_uni_pro 
   And Mvto_estoque.Cd_estoque         = Estoque.Cd_estoque 
   And Mvto_estoque.Cd_fornecedor      = Fornecedor.Cd_fornecedor(+) 
   And Estoque.Cd_Multi_empresa        = 3 
   AND PRODUTO.cd_produto = 130001 
GROUP BY Itmvto_estoque.Cd_produto 
     , Produto.Ds_produto 
     , VERIF_DS_UNID_PROD(Itmvto_estoque.Cd_produto ) 
     , Mvto_estoque.Dt_mvto_estoque 
     , Mvto_estoque.Hr_mvto_estoque 
     , Mvto_estoque.Cd_mvto_estoque 
     , Initcap( Nvl( Paciente.Nm_paciente, 
       Decode( Mvto_estoque.Tp_mvto_estoque, 'T', Estoque_destino.Ds_estoque, 'B', 'Tombamento Patrimonio','E',Fornecedor.Nm_fornecedor, Setor.Nm_setor ) ) ) 
     , Initcap( Decode( Mvto_estoque.Tp_mvto_estoque, 
               'X', 'Baixa De Produtos', 
               'S', 'Saída Setor'   , 
               'B', 'Tombamento' , 
               'P', 'Saída Paciente'   , 
               'D', 'Devol. De Setor'  , 
               'C', 'Devol. De Paciente' , 
               'T', 'Transf. De Estoque ', 
               'M', 'Manipul.  Produtos' , 
               'O', 'Doação  Produtos', 
               'E', 'Saída De Empréstimo', 
               'R', 'Transf. Empresas', 
               'V', 'Venda De Produtos' , 
               'N', 'Devolução De Vendas')) 
     , Estoque.Cd_estoque 
     , Estoque.Ds_estoque 
     , dbamv.VERIF_VL_FATOR_PROD(itmvto_estoque.cd_produto) 
     , Produto.Sn_Consignado 
)ORDER BY data,produto, operacao ASC; 
The result of this query is as follows:

Select all

 
DATA       DOC     PRODUTO        UNID    OPERACAO QUANT. EST. DESTINO            SALDO 
27/12/2014 1432    BOLSA 6.4MM 	PECA 	Contagem 75     ALMOXARIFADO CENTRAL 	65 
27/12/2014 5135912 BOLSA 6.4MM 	PECA 	Transf.  -10    FARMACIA SAT 5°         65 
28/12/2014 5140055 BOLSA 6.4MM 	PECA 	Transf.  -4     FARMACIA SAT 2º P.S.    61 
29/12/2014 5142633 BOLSA 6.4MM 	PECA 	Transf.  -15    FARMACIA SAT 5°         46 
30/12/2014 5144307 BOLSA 6.4MM 	PECA 	Transf.  -5     FARMACIA SAT 2º P.S.    31 
30/12/2014 5144283 BOLSA 6.4MM 	PECA 	Transf.  -10    FARMACIA SATELITE CC    31 
Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 9 guests