2011-06-21 96 views
1

初心者はこちらです。MYSQL動的クロス集計質問

私はどのように動的に(名前の数が変わる場合があります)からテーブルを変換することができますCodeIgniterのとMySQL を使用しています:へ

+------+-------+-------+ 
| date | name | value | 
+------+-------+-------+ 
| 06-01| A | 1 | 
| 06-02| A | 2 | 
| 06-02| B | 3 | 
| 06-03| C | 4 | 
+------+-------+-------+ 

+------+---+---+---+ 
| date | A | B | C | 
+------|---+---+---| 
| 06-01| 1 | | | 
| 06-02| 2 | 3 | | 
| 06-03| | | 4 | 
+------+---+---+---+ 

ありがとうございます。

+0

クロス集計およびその他のクエリについては、この素晴らしいページをチェックアウトしてください:http://www.artfulsoftware.com/infotree/queries.php – Mike

答えて

2

何かこれはうまくいくはずです。

SELECT date, 
     SUM(IF(name='A',value,0)) AS 'A', 
     SUM(IF(name='B',value,0)) AS 'B', 
     SUM(IF(name='C',value,0)) AS 'C' 
FROM myTable 
GROUP BY date 
ORDER BY date 

あなたのカラム名がSQL文の中に手動で和のそれぞれを追加するために何ができるか知っている必要がありますが、多くのことを変更する可能性だった場合は、PHPを使ってこれを行うことができます。

同様に、nameの値の合計ではなく、各名前の何回目の回数をカウントしたければ、value1に置き換えます。

+1

私は、GROUP BYの日付を意味していたと思います。 – rMX

+0

いいところです。編集しました、ありがとうございました。 – Codecraft

関連する問題