gpt4 book ai didi

php - 带有月份列和多个字段行的mysql交叉表

转载 作者:行者123 更新时间:2023-11-29 03:39:26 25 4
gpt4 key购买 nike

为不同的产品创建月度销售摘要。 Zane Bien 在此处发布的帖子对于创建查询以生成单个产品的一行非常有帮助:

Income Source  Jan   Feb   Mar   --  Total  Pct  
Report Fees 11285 12745 17980 ... 236970 95.9954

这是查询:

SELECT "Report Fees" AS `Income Source`, 
SUM( IF( MONTH( b.ord_billed_time ) =1, b.ord_fee_report, 0 ) ) AS Jan,
SUM( IF( MONTH( b.ord_billed_time ) =2, b.ord_fee_report, 0 ) ) AS Feb,
SUM( IF( MONTH( b.ord_billed_time ) =3, b.ord_fee_report, 0 ) ) AS Mar,
"..." AS `--` ,
SUM( b.ord_fee_report ) AS Total,
AVG( b.ord_fee_report / b.ord_fee_total ) *100 AS Pct
FROM orders b
WHERE b.ord_billed_time IS NOT NULL
AND b.ord_cancelled_time IS NULL
AND b.ord_fee_report IS NOT NULL
AND year( b.ord_billed_time ) = 2012
AND b.clientID = 8

有没有办法扩展这个单一查询,以便我得到 8 行,每行对应一种不同的收入类型,以及一行“总计”?像这样:

Income Source  Jan   Feb   Mar   --  Total  Pct  
Report Fees 11285 12745 17980 ... 236970 95.9954
Income Type2 5401 3320 1394 ... 13456 0.321
Income Type3 98 421 14 ... 1102 0.001
...
Total 333333 22222 11111 ... 9999999 100.0

收入类型存储在订单表中的单独列中:ord_fee_x、ord_fee_y、ord_fee_z 等。

现在我正在运行 8 个查询并将结果加载到一个数组中,然后从该数组中显示。一次获取所有数据并在返回时逐行显示似乎更有效。

有办法吗?

最佳答案

可以通过UNION操作来实现。理想情况下,您应该针对您的情况使用 UNION ALL,因为看起来您的查询将根据每个收入来源的自定义计算产生独特的结果。 UNION ALL 将包括所有行,这与排除重复行的 UNION 相比可以说更快。

换句话说:

(SELECT "Report Fees" AS `Income Source`, 
SUM( IF( MONTH( b.ord_billed_time ) =1, b.ord_fee_report, 0 ) ) AS Jan,
SUM( IF( MONTH( b.ord_billed_time ) =2, b.ord_fee_report, 0 ) ) AS Feb,
SUM( IF( MONTH( b.ord_billed_time ) =3, b.ord_fee_report, 0 ) ) AS Mar,
"..." AS `--` ,
SUM( b.ord_fee_report ) AS Total,
AVG( b.ord_fee_report / b.ord_fee_total ) *100 AS Pct
FROM orders b
WHERE b.ord_billed_time IS NOT NULL
AND b.ord_cancelled_time IS NULL
AND b.ord_fee_report IS NOT NULL
AND year( b.ord_billed_time ) = 2012
AND b.clientID = 8)
UNION ALL
(... query 2 ...)
UNION ALL
(... query 3 ...)

等等。

引用:http://dev.mysql.com/doc/refman/5.0/en/union.html

关于php - 带有月份列和多个字段行的mysql交叉表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com