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
Curtir tópico
+ 0
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
Clique aqui para fazer login e interagir na Comunidade :)