sql >> Database >  >> RDS >> Mysql

de pivot-functie in mysql gebruiken om een ​​tabel apriori te maken

Voor uw GROUP_CONCAT-vraag; in uw geval stmt, verwijst u naar uw producttabel als product zelf. Maar in uw join-query verwijst u naar de producttabel als alias p . Aangezien de eerste group_concat-query een onderdeel is van de join-query, moet u de tabelaliassen hetzelfde houden. (wijzigingen aangebracht op regel 5)

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(case when p.name = ''',  
      product.name,
      ''' then 1 end) AS ',
      replace(product.name, ' ', '')
    )
  ) INTO @pivotsql
from product;

SET @sql = CONCAT('SELECT omd.order_match_id, ', @pivotsql, ' from order_match_detail omd
left join order_match om
  on omd.order_match_id = om.id
left join product p
  on omd.product_id = p.id
  where om.order_status_id in (4, 5, 6, 8)
group by omd.order_match_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;



  1. Stabiele/herhaalbare willekeurige sortering (MySQL, Rails)

  2. Hoe krijg ik het IP-adres van de client van SQL Server 2008 zelf?

  3. Het MySQL- en PHP-datumverschil in dagen berekenen

  4. MySQL 8 splitst string door komma en converteert deze naar JSON ARRAY