Advertisement
cahyadsn

crosstab/pivot table

Aug 11th, 2017
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.84 KB | None | 0 0
  1. DROP TABLE IF EXISTS tabel;
  2. CREATE TABLE tabel(
  3. nama VARCHAR(30),
  4. hasil VARCHAR(30),
  5. bulan VARCHAR(30)
  6. );
  7.  
  8. INSERT INTO tabel VALUES
  9. ('B Benjor','k1','Jul I'),
  10. ('B Berambang','k2','Jul I'),
  11. ('B Jengguar','k4','Jul I'),
  12. ('B Sidemen','k2','Jul I'),
  13. ('E/S Gule Liat','k2','Jul I'),
  14. ('B Benjor','k2','Jul II'),
  15. ('B Berambang','k3','Jul II'),
  16. ('B Jengguar','k1','Jul II'),
  17. ('B Sidemen','k3','Jul II'),
  18. ('E/S Gule Liat','k1','Jul II');
  19.  
  20. SELECT * FROM tabel;
  21. +---------------+-------+--------+
  22. | nama          | hasil | bulan  |
  23. +---------------+-------+--------+
  24. | B Benjor      | k1    | Jul I  |
  25. | B Berambang   | k2    | Jul I  |
  26. | B Jengguar    | k4    | Jul I  |
  27. | B Sidemen     | k2    | Jul I  |
  28. | E/S Gule Liat | k2    | Jul I  |
  29. | B Benjor      | k2    | Jul II |
  30. | B Berambang   | k3    | Jul II |
  31. | B Jengguar    | k1    | Jul II |
  32. | B Sidemen     | k3    | Jul II |
  33. | E/S Gule Liat | k1    | Jul II |
  34. +---------------+-------+--------+
  35. 10 rows in set (0.00 sec)
  36.  
  37. SELECT
  38. nama,
  39. GROUP_CONCAT(IF(bulan='Jul I',hasil,NULL)) AS Jul_I,
  40. GROUP_CONCAT(IF(bulan='Jul II',hasil,NULL)) AS Jul_II
  41. FROM tabel
  42. GROUP BY nama;
  43.  
  44. +---------------+-------+--------+
  45. | nama          | Jul_I | Jul_II |
  46. +---------------+-------+--------+
  47. | B Benjor      | k1    | k2     |
  48. | B Berambang   | k2    | k3     |
  49. | B Jengguar    | k4    | k1     |
  50. | B Sidemen     | k2    | k3     |
  51. | E/S Gule Liat | k2    | k1     |
  52. +---------------+-------+--------+
  53. 5 rows in set (0.00 sec)
  54.  
  55.  
  56. SET @sql = NULL;
  57. SELECT
  58.   GROUP_CONCAT(DISTINCT
  59.     CONCAT(
  60.       'GROUP_CONCAT(IF(bulan=\'',
  61.       bulan,
  62.       '\',bulan,NULL)) AS \'',
  63.       bulan,'\''
  64.     )
  65.   ) INTO @sql
  66. FROM tabel;
  67. SET @sql = CONCAT('SELECT nama, ', @sql, '
  68.                  FROM tabel
  69.                  GROUP BY nama');
  70. PREPARE stmt FROM @sql;
  71. EXECUTE stmt;
  72. DEALLOCATE PREPARE stmt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement