Fórum Utilizando pivot nessa query de colunas dinâmicas #612714

04/09/2020

0

Tenho a query abaixo onde exibo produtos, ordenados pelo código do produto, a data de movimentação do produto é da mais recente para a mais antiga, porém como que queria apenas as ultimas 5 datas de um período definido, utilizei rank, até aí tudo bem. Mas agora queria transformar a data em coluna e colocar sua respectiva quant. de movimentação abaixo dela. Porém ela é dinâmica, posso ter de 1 até 5 colunas. e essa linha de colunas de acordo com o cod do produto.. ex. primeira linha de colunas são as 5 datas do produto 1, as próxima linha de 5 colunas abaixo da anterior, as datas do produto 2 e assim sucessivamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
SELECT *
FROM
 
(
 
SELECT 
 
 TB2.CD_CLASSE
 --,TB2.CD_ESTOQUE
 ,TB2.CD_PRODUTO
 ,TB2.DS_PRODUTO
 ,TB2.DH_MVTO_ESTOQUE
 ,TB2.QT_MOVIMENTACAO
 ,TB2.QT_ESTOQUE_ATUAL
 ,TB2.TP_CLASSIFICACAO_XYZ
 ,TB2.TP_CLASSIFICACAO_ABC,
 
 Dense_Rank () OVER (
    PARTITION BY TB2.CD_PRODUTO
    ORDER BY TB2.DH_MVTO_ESTOQUE DESC
 
 ) AS RANK_PROD
 
FROM
 
(
 
 SELECT DISTINCT
  
 TB1.CD_CLASSE
,TB1.CD_PRODUTO
,TB1.DS_PRODUTO
,MVT_EST.DH_MVTO_ESTOQUE
,MVT_EST.QT_MOVIMENTACAO
,TB1.QT_ESTOQUE_ATUAL
,TB1.TP_CLASSIFICACAO_XYZ
,TB1.TP_CLASSIFICACAO_ABC
 
 FROM
  
  ITMVTO_ESTOQUE MVT_EST,
 (
 
 SELECT DISTINCT
 
 PROD.CD_CLASSE
,PROD.CD_PRODUTO
,PROD.DS_PRODUTO
,PROD.QT_ESTOQUE_ATUAL
,EMPROD.TP_CLASSIFICACAO_XYZ
,EMPROD.TP_CLASSIFICACAO_ABC
   
     
 FROM
 
    PRODUTO PROD
   ,EMPRESA_PRODUTO EMPROD --TEM
    
   
 
 
 WHERE
 
  PROD.CD_PRODUTO = EMPROD.CD_PRODUTO
    
   
 
  ORDER BY PROD.CD_PRODUTO
)TB1
  
 WHERE
  
 TB1.CD_PRODUTO = MVT_EST.CD_PRODUTO AND
 MVT_EST.DH_MVTO_ESTOQUE BETWEEN TO_DATE ('20/05/2020', 'dd/mm/yyyy')
 AND TO_DATE ('20/07/2020', 'dd/mm/yyyy')
 
)TB2 
)
 
WHERE RANK_PROD <= 5
Marcus Vinícius

Marcus Vinícius

Responder

Posts

04/09/2020

Emerson Nascimento

acredito que nesse caso seja melhor utilizar stored procedures ou funcitons. acredito que não seja possível resolver diretamente numa instrução.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar