1

異なる種類の合計を取得するためだけに、同じ年の同じ月の異なる合計を取得しようとしています。このコードを使用してみました:

SELECT a.invoice_type, year( a.date ) AS Year, 
       date_format( a.date, '%M' ) AS `month` , 
       Sum( x.amount * x.price ) AS sum FROM records x 
JOIN paper_invoice a ON x.invoice_id = a.invoice_id 
WHERE year( a.date ) = '2012' 
GROUP BY a.invoice_type, Year( a.date ) , Month( a.date ) LIMIT 0 , 30     

しかし、結果は異なる行に表示されます:

http://www.part.lt/img/1505f0f13172922150febede85ddbf0925.png

しかし、次のようにする必要があります。

Year | Month   | SUM_GRYNAIS      | SUM_PAVEDIMU
2012 | January | 7597.14997705445 | 58740.2800849304

や。。など。

4

3 に答える 3

1

これを試して:

SELECT Year, Month,
MAX(CASE WHEN invoice_type = 'GRYNAIS' THEN sum END) As Sum_GRYNAIS
MAX(CASE WHEN invoice_type = 'PAVEDIMU' THEN sum END) As SUM_PAVEDIMU
FROM
(
SELECT a.invoice_type, year( a.date ) AS Year, 
date_format( a.date, '%M' ) AS `month` , Sum( x.amount * x.price ) AS sum 
FROM records x JOIN paper_invoice a ON x.invoice_id = a.invoice_id 
WHERE year( a.date ) = '2012' GROUP BY a.invoice_type, Year( a.date ) , 
Month( a.date ) LIMIT 0 , 30     

)
GROUP BY Year, Month
于 2012-06-04T19:57:47.643 に答える
0

月ごとに値が異なるためです。フィールドの年だけで Group By を試してください。

于 2012-06-04T19:56:19.547 に答える
0

基本的にPIVOTを探しています。MySql には PIVOT 関数がありませんが、これを行うことはできます。MySql の PIVOT の例を次に示します。

http://www.artfulsoftware.com/infotree/queries.php#78

于 2012-06-04T19:56:33.833 に答える