-
LEFT JOIN
を使用する 念のため、どの月にも請求書がない場合でも、会社の完全なリストを取得できます。 - 手動またはスクリプトを使用してn列を作成する必要があります。
- 単純な結合を行うだけで、サブクエリは必要ありません。
-
GROUP BY
を使用する 会社ごとに単一のレコードを生成します。
-
CASE WHEN
を使用する またはIF ELSE
n列を作成し、関連する行からのみデータを選択します。最初の行または任意の行にすることができるため、集計関数を使用して、グループの任意の行にある場合でも、他の行の値をNULL
として作成し、データを選択します。 集計関数はnull値を除外するため。
SELECT
u.display_name,
SUM(IF( bill_month='Jan2k19', package_price, NULL)) as first_bill,
SUM(IF( bill_month='Feb2k19', package_price, NULL)) as second_bill,
SUM(IF( bill_month='Mar2k19', package_price, NULL)) as third_bill
FROM bf_users u
LEFT JOIN bf_monthly_bill b on u.id=b.company_id
GROUP BY u.display_name;