条件付き合計でこれを行うことができます。毎月のためには、行は、その月のためであるので、あなたは合計したい値を、使用している場合ではないあなただけの、よりトリッキーになる年でこう0
$strSQL = "SELECT IFNULL(`ProductName`, 'Total') AS 'ProductName',`
Closed On`,
SUM(IF(MONTH(`Closed On`) = 1, `Quantity`, 0)) AS `Jan`,
SUM(IF(MONTH(`Closed On`) = 2, `Quantity`, 0)) AS `Feb`,
SUM(IF(MONTH(`Closed On`) = 3, `Quantity`, 0)) AS `Mar`,
SUM(IF(MONTH(`Closed On`) = 4, `Quantity`, 0)) AS `Apr`,
SUM(IF(MONTH(`Closed On`) = 5, `Quantity`, 0)) AS `May`,
SUM(IF(MONTH(`Closed On`) = 6, `Quantity`, 0)) AS `Jun`,
SUM(IF(MONTH(`Closed On`) = 7, `Quantity`, 0)) AS `Jul`,
SUM(IF(MONTH(`Closed On`) = 8, `Quantity`, 0)) AS `Aug`,
SUM(IF(MONTH(`Closed On`) = 9, `Quantity`, 0)) AS `Sep`,
SUM(IF(MONTH(`Closed On`) = 10, `Quantity`, 0)) AS `Oct`,
SUM(IF(MONTH(`Closed On`) = 11, `Quantity`, 0)) AS `Nov`,
SUM(IF(MONTH(`Closed On`) = 12, `Quantity`, 0)) AS `Dec`,
SUM(`Quantity`) as Quantity ,
SUM(`Price Paid`) as Price
FROM `".$user."_products`
WHERE DATE(`Closed On`) >= '$datefrom'
AND DATE(`Closed On`) <='$dateto'
GROUP by `ProductName` with ROLLUP";
EDIT
使用している場合かどうかを確認します。 1オフとして、上記とほぼ同じです。月よりむしろ年をチェックするだけです。しかし、これがオンラインレポートの場合は、おそらく年のウィンドウが動くようにしたいと考えています(つまり、今年は2011年から2016年に興味がありますが、2020年はおそらく2015年から2020年に移行しました)。この場合、おそらくphp(あるいはMySQLストアドプロシージャ)でクエリを動的に構築する必要があります。これにはいくつかの方法がありますが、それらは依然として面倒です(返される列名を実際に変更することはできません。返す列名を指定するには、あらかじめクエリを変更する必要があります)。
基本クエリ: -
$strSQL = "SELECT IFNULL(`ProductName`, 'Total') AS 'ProductName',
`Closed On`,
SUM(IF(YEAR(`Price Paid`) = 2006, `Quantity`, 0)) AS `2006`,
SUM(IF(YEAR(`Price Paid`) = 2007, `Quantity`, 0)) AS `2007`,
SUM(IF(YEAR(`Price Paid`) = 2008, `Quantity`, 0)) AS `2008`,
SUM(IF(YEAR(`Price Paid`) = 2009, `Quantity`, 0)) AS `2009`,
SUM(IF(YEAR(`Price Paid`) = 2010, `Quantity`, 0)) AS `2010`,
SUM(IF(YEAR(`Price Paid`) = 2011, `Quantity`, 0)) AS `2011`,
SUM(IF(YEAR(`Price Paid`) = 2012, `Quantity`, 0)) AS `2012`,
SUM(IF(YEAR(`Price Paid`) = 2013, `Quantity`, 0)) AS `2013`,
SUM(IF(YEAR(`Price Paid`) = 2014, `Quantity`, 0)) AS `2014`,
SUM(IF(YEAR(`Price Paid`) = 2015, `Quantity`, 0)) AS `2015`,
SUM(IF(YEAR(`Price Paid`) = 2016, `Quantity`, 0)) AS `2016`,
SUM(IF(YEAR(`Price Paid`) = 2017, `Quantity`, 0)) AS `2017`,
SUM(`Quantity`) as Quantity ,
SUM(`Price Paid`) as Price
FROM `".$user."_products`
WHERE DATE(`Closed On`) >= '$datefrom'
AND DATE(`Closed On`) <='$dateto'
GROUP by `ProductName` with ROLLUP";
こんにちは私はこのクエリを使用しますが、それは量ではない総売上 – Skieth
@Skiethを示して - あなたはそのための出力を望むもので、テーブル宣言していくつかのサンプルデータを置くことができますサンプルデータ。それから私は試してみることができます。現時点で私ができることは、推測です – Kickstart
ありがとう私は価格の代金を支払う代わりにお返事をいただきありがとうございます。 – Skieth