質問: P.ProductID ORDER BY P.ProductID ; ``` ### 補足情報(言語/FW/ツール等のバージョンなど) 出力項目:ProductID、ProductName、6月販売金額、7月販売金額、対6月増減、8月販売金額、対7月増減 出力順:ProductID クロス集計を使用したい NameをGROUP BYしたくない
回答: こんにちは。 こんな感じでしょうか。 確認してみてください。 ---------- ↓ ここから ↓ ---------- SELECT D.ProductID , D.ProductName , B.`6月販売金額` , B.`7月販売金額` , CASE WHEN B.`6月販売金額` > B.`7月販売金額` THEN "↓" WHEN B.`6月販売金額` = B.`7月販売金額` THEN "→" ELSE "↑" END AS '対6月増減' , B.`8月販売金額` , CASE WHEN B.`7月販売金額` > B.`8月販売金額` THEN "↓" WHEN B.`7月販売金額` = B.`8月販売金額` THEN "→" ELSE "↑" END AS '対7月増減' FROM ( SELECT W.ProductID , SUM( CASE WHEN SUBSTR( Q.SaleDate , 1, 7 ) = '2007-06' THEN Q.Quantity * W.Price ELSE 0 END ) AS '6月販売金額' , SUM( CASE WHEN SUBSTR( Q.SaleDate , 1, 7 ) = '2007-07' THEN Q.Quantity * W.Price ELSE 0 END ) AS '7月販売金額' , SUM( CASE WHEN SUBSTR( Q.SaleDate , 1, 7 ) = '2007-08' THEN Q.Quantity * W.Price ELSE 0 END ) AS '8月販売金額' FROM Sales AS Q INNER JOIN Products AS W ON Q.ProductID = W.ProductID WHERE Q.SaleDate BETWEEN '2007-06-01' AND '2007-08-31' GROUP BY W.ProductID ) AS B LEFT JOIN Products AS D ON B.ProductID = D.ProductID ORDER BY D.ProductID ---------- ↑ ここまで ↑ ----------