basetreinamentos

Estudo de caso Clausula Pivot

Sep 30th, 2020 (edited)
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Criar um tabela de teste para a claúsula pivot
  2.  
  3. CREATE TABLE pivot_test (
  4.   id            NUMBER,
  5.   customer_id   NUMBER, -- ID do cliente
  6.   product_code  VARCHAR2(5), -- Código do produto
  7.   quantity      NUMBER -- Quantidade
  8. );
  9.  
  10. -- Realizar os insert dos dados
  11.  
  12. INSERT INTO pivot_test VALUES (1, 1, 'A', 10);
  13. INSERT INTO pivot_test VALUES (2, 1, 'B', 20);
  14. INSERT INTO pivot_test VALUES (3, 1, 'C', 30);
  15. INSERT INTO pivot_test VALUES (4, 2, 'A', 40);
  16. INSERT INTO pivot_test VALUES (5, 2, 'C', 50);
  17. INSERT INTO pivot_test VALUES (6, 3, 'A', 60);
  18. INSERT INTO pivot_test VALUES (7, 3, 'B', 70);
  19. INSERT INTO pivot_test VALUES (8, 3, 'C', 80);
  20. INSERT INTO pivot_test VALUES (9, 3, 'D', 90);
  21. INSERT INTO pivot_test VALUES (10, 4, 'A', 100);
  22. COMMIT;
  23.  
  24. SELECT * FROM pivot_test;
  25.  
  26. -- Utilizar a cláusula PIVOT primeiramente sem passar o customer_id
  27.  
  28. SELECT *
  29. FROM   (
  30.         SELECT product_code, quantity
  31.         FROM   pivot_test
  32.         )
  33. PIVOT  
  34.     (
  35.      SUM(quantity)
  36.      FOR (product_code) IN ('A', 'B', 'C')
  37.      );
  38.      
  39. -- O resultado é uma coluna para cada produto (A,B e C) e suas respectivas quantidades.
  40.  
  41. -- Agora vamos utilizar a cláusula PIVOT informando customer_id
  42.  
  43. SELECT *
  44. FROM   (
  45.         SELECT customer_id, product_code, quantity
  46.         FROM   pivot_test
  47.         )
  48. PIVOT  
  49.     (
  50.      SUM(quantity)
  51.      FOR (product_code) IN ('A', 'B', 'C')
  52.      );
  53.  
  54. -- O resultado é uma coluna para cada produto (A,B e C) e suas respectivas quantidades.
  55. -- Porém, nesse resultado, podemos ver que: o CLIENTE 2 e 4 para o PRODUTO B o resultado é NULL
  56. -- Isso porque o CLIENTE 2 e 4 não possuem nenhuma quantidade do produto B
  57. -- E ainda podemos ver que o cliente 4 para o produto C o resultado é NULL
  58. -- Isso porque o CLIENTE 4 não possuem nenhuma quantidade do produto C
  59.  
RAW Paste Data