sql >> Database teknologi >  >> RDS >> Mysql

Pivotbord med 3 borde

Det ser ud til, at du muligvis har et ukendt antal gebyrer, som du vil omdanne til kolonner, hvis det er tilfældet, vil du bruge forberedte udsagn til at forespørge på dette:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when f.fee_name = ''',
      f.fee_name,
      ''' then f.fee_amount else 0 end) AS `',
      f.fee_name, '`'
    )
  ) INTO @sql
FROM fee f;

SET @sql = CONCAT('SELECT s.school_id, ', @sql, '
                    , sum(f.fee_amount) as Total
                  FROM students s
                  LEFT JOIN stud_fee sf
                    on s.id = sf.stud_id
                  LEFT JOIN fee f
                    on sf.fee_id = f.id
                   GROUP BY s.school_id');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Se SQL Fiddle with Demo



  1. MySQL-forespørgsel for at få WooCommerce-produkter efter kategorinavn

  2. 2 måder at få dagen fra en date i Oracle

  3. Kald Java-program fra Oracle database trigger

  4. Oprettelse af en MySQL-klynge ved hjælp af mysql-server docker-containere på flere servere