sql >> Databasteknik >  >> RDS >> Mysql

använder pivotfunktionen i mysql för att göra en tabell apriori

För din GROUP_CONCAT-fråga; i ditt fall stmt hänvisar du till din produkttabell som product sig. Men i din kopplingsfråga hänvisar du till produkttabellen som alias p . Eftersom den första group_concat-frågan är en del av kopplingsfrågan, måste du behålla tabellaliasen oförändrade.(gjorda ändringar på rad 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. Summa för flera datumintervall i en enda fråga?

  2. Beräkna kolumnvärdet från en annan kolumn i en annan tabell

  3. Hur man BESTÄLLER EFTER baserat på två olika kolumner

  4. Django ORM-frågor misslyckas med att välja nya objekt