【问题标题】:Same month two different SUMS同月两个不同的总和
【发布时间】:2012-06-04 19:50:05
【问题描述】:

我试图在同一年的同一个月获得不同的总和,只是为了获得不同类型的总和。尝试使用此代码:

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

和等。

【问题讨论】:

    标签: mysql join group-by


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      因为每个月都有不同的价值。仅在现场年份尝试 Group By。

      【讨论】:

        【解决方案3】:

        您基本上是在寻找 PIVOT。 MySql 没有 PIVOT 功能,但您仍然可以完成此操作。下面是 MySql 中的 PIVOT 示例:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多