MySQL - sum column value(s) based on row from the same table

前端 未结 3 1220
我寻月下人不归
我寻月下人不归 2020-12-07 13:46

I\'m trying to get \'Cash\', \'Check\' and \'Credit Card\' totals in new columns based on ProductID from the same table.

Table - Payments

+---------         


        
3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-07 14:29

    SUM CASE using example:

        SELECT 
      DISTINCT(p.`ProductID`) AS ProductID,
      SUM(IF(p.`PaymentMethod`='Cash',Amount,0)) AS Cash_,
      SUM(IF(p.`PaymentMethod`='Check',Amount,0)) AS Check_,
      SUM(IF(p.`PaymentMethod`='Credit Card',Amount,0)) AS Credit_Card_,
      SUM( CASE PaymentMethod 
          WHEN 'Cash' THEN Amount
          WHEN 'Check' THEN Amount
          WHEN 'Credit Card' THEN Amount
         END) AS Total
    FROM
      `payments` AS p 
    GROUP BY p.`ProductID`;
    

    SQL FIDDLE: http://www.sqlfiddle.com/#!9/23d07d/18

提交回复
热议问题