さまざまな製品の毎月の売上概要を作成します。Zane Bien の投稿は、単一の製品に対して 1 つの行を生成するクエリを作成するのに非常に役立ちます。
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
この単一のクエリを拡張して、収入の種類ごとに 1 行ずつ、合計 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
収入の種類は、orders テーブルの個別の列 (ord_fee_x、ord_fee_y、ord_fee_z など) に格納されます。
現在、8 つのクエリを実行し、結果を配列にロードして、その配列から表示しています。一度にすべてのデータを取得し、返された行ごとに表示する方が効率的です。
それを行う方法はありますか?