4

假设我有一张这样的桌子:

emp_id  work_site   expenses
001     atlanta     $500
001     atlanta     $750
002     boston      $750
002     chicago     $250
003     chicago     $500
003     chicago     $500

现在我想按 emp_id 和唯一城市对费用进行分组,格式如下:

emp_id  atlanta boston  chicago
001     $1250    $0     $0
002     $0       $750   $250
003     $0       $0     $1000

在 mysql 或 PHP 中执行此操作的最佳方法是什么?

4

2 回答 2

3

简单地说,你可以这样做:

  SELECT emp_id, 
         SUM( if( work_site = 'atlanta', expenses , 0 ) ) AS 'atlanta',  
         SUM( if( work_site = 'boston', expenses , 0 ) ) AS 'boston', 
         SUM( if( work_site = 'chicago', expenses , 0 ) ) AS 'chicago' 
  FROM your_table
  GROUP BY emp_id
于 2012-09-02T06:59:45.090 回答
3

您可以使用它进行旋转,如果不是,您需要先将费用转换为数字

 select emp_id
,SUM(CASE  WHEN work_site ='atlanta' THEN expenses else 0 END) as 'atlanta'
,SUM(CASE  WHEN work_site ='boston' THEN expenses else 0 END) as 'boston'
,SUM(CASE  WHEN work_site ='chicago' THEN expenses else 0 END) as 'chicago'
from Table1
group by emp_id

SQL FIDDLE http://sqlfiddle.com/#!2/dd535/1/0

于 2012-09-02T06:33:20.600 回答