WooCommerce网店统计SQL按buchungsbezeichnung元字段分组求和问题
WooCommerce订单统计SQL修正方案
你原来的SQL存在语法错误(WHERE子句放置在GROUP BY之后,不符合SQL执行顺序),可以通过子查询先计算单订单维度的指标,再外层按记账描述分组求和,最终查询语句如下:
SELECT Buchungsbez, SUM(Bankzahlung) AS 总银行支付额, SUM(Mitgliedszahlung) AS 总会员支付额 FROM ( SELECT p.ID AS 'Order ID', MAX( CASE WHEN pm.meta_key = 'buchungsbezeichnung' AND p.ID = pm.post_id THEN pm.meta_value END ) AS 'Buchungsbez', MAX( CASE WHEN pm.meta_key = 'bilanzwert' AND p.ID = pm.post_id AND p.post_status = 'wc-ugw-u-zahlung-pro' THEN (0 - pm.meta_value) END ) AS 'Bankzahlung', MAX( CASE WHEN pm.meta_key = 'bilanzwert' AND p.ID = pm.post_id AND p.post_status = 'wc-agw-zahlung-prod' THEN pm.meta_value END ) AS 'Mitgliedszahlung' FROM KtS4szE8u_posts AS p JOIN KtS4szE8u_postmeta AS pm ON p.ID = pm.post_id WHERE p.post_status IN('wc-agw-zahlung-prod','wc-ugw-u-zahlung-pro') GROUP BY p.id ) AS order_base GROUP BY Buchungsbez
说明
- 内层子查询先按订单ID聚合,拿到每个订单对应的记账描述、银行支付金额、会员支付金额,过滤条件提前到
GROUP BY之前,符合SQL语法规范 - 外层查询直接按记账描述分组,对两个金额字段求和,直接输出每个记账分类对应的汇总数据,无需再导出到Excel做透视表处理
内容的提问来源于stack exchange,提问作者FoodCoop Neumarkt
相关产品推荐
相关产品推荐

