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(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 に答える
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 に答える