这是我的查询。这是Fiddle。
set @sql:=null;
select group_concat(distinct concat('sum(if(c.center_name="',center_name,'",w.final_kg,0)) `', center_name,'`'))
from wd_collection_center
into @sql;
set @sql:=concat('SELECT w.purchase_date,', @sql, '
FROM wd_leaf_purchase w
join wd_leaves_supplier s on w.supplier_id = s.supplier_id
join wd_collection_center c on s.center_id = c.center_id
WHERE EXTRACT(MONTH FROM w.purchase_date) = MONTH(NOW())
AND EXTRACT(YEAR FROM w.purchase_date) = YEAR(NOW())
group by w.purchase_date;');
prepare st from @sql;
execute st;
deallocate prepare st;
以上查询生成包含wd_collection_center
表中列名的报告。目前,列名称按center_name
的报告顺序显示。
这意味着,我在wd_collection_center
表上有数据如下。
center_id, center_name
20 Pann Center
41 Main Center
42 Vehicle
当我在查询上方运行时,结果中的列如下所示。
purchase_date, Main Center, Pann Center, Vehicle
但我需要按center_id
排序列,如下所示。
purchase_date, Pann Center, Main Center, Vehicle
我尝试了order by center_id
。但它没有对输出做任何改变。
我该怎么做?
这是Fiddle。