2012-03-31 6 views
2

私は必要なクエリを整理するのに苦労しています。私はこのmysqlクエリのデータをグループ化またはピボットして列を列として作成する

colDist  colGender   attnedancePrcnt 
Place-1  Male     2.5 % 
Place-1  Female    1.5% 
Place-2  Male     3.5% 
Place-2  Female    2.1% 

のようなシナリオは今、私はこれがcoldDistによってグループの一種であるが、私はちょうどcolMaleを作るために、トラブルに直面しています。この

colDist  colMale   colFemale 
Place-1  2.5%    1.5 % 
Place-2  3.5%    2.1 % 

のようなデータを持っているMySQLでクエリを必要としていcolFemaleを最初のデータセットから2番目のデータセットに変換します。

アドバンスありがとうございます。

colDist  colMale   colFemale 
Place-1  2.5%    1.5 % 
Place-2  3.5%    2.1 % 

だから、どのようにすることができます:

このアプローチ.....

select colDist, if(colGender='Male',colGender,null) as colMale , 
     if(colGender='Female',colGender,null) as colFemale 
from tablename 

が、私はこのようにそれらを必要とし、再び私にこの

colDist  colMale   colFemale   attnedancePrcnt 
Place-1  Male    NULL     2.5 
Place-1  NULL    Female    1.5 
Place-2  Male    NULL     3.5 
Place-2  NULL    Female    2.1 

のような結果を与えるが、必要に応じてデータをグループ化するかピボットしますか?

ありがとうございました。それが動作するかどうか、あなたが望むよう

+0

これはピボットテーブルと呼ばれ、SOのような多くの答えがあります:http://stackoverflow.com/questions/5846007/sql-query-to-pivot-a-column-using-case-when – liquorvicar

答えて

1
SELECT 
    t1.colDist, 
    t1.attnedancePrcnt AS colMale, 
    t2.attnedancePrcnt AS colFemale 
FROM 
    tablename AS t1 
INNER JOIN tablename AS t2 ON t1.colDist = t2.colDist 
AND t1.colGender != t2.colGender 
WHERE 
    t1.colGender = 'Male' 

をまた「attnedance」は「出席」綴られるべきであることは注目に値します。

+0

ありがとうMR。それは私のために働いた。出席を訂正してくれてありがとう! –

+0

心配はいりません。あなたが答えを受け入れたら、答えの隣のチェックマークをクリックする必要があります。それはリストの一番上にプッシュされ、人々が質問を見直すと、どの答えが正しいかを簡単に見ることができます。 – MichaelRushton

+0

ああ、私は今それを学んだ... :) –

1

チェック:

select colDist, if(colGender='Male',colGender,null) as colMale , 
     if(colGender='Female',colGender,null) as colFemale 
from tablename 
+1

ありがとう近くにはたくさんありますが、私はあなたが既にPlace-1とPlace-2に気付いていたので、colDistによるグループに基づいてそれらを必要とします。あなたの解決策では、それが女性で副品であれば、男性の列はnullであることがわかりました。 –

+0

ピボットクエリーを使用することをお勧めしますか? –

+1

これを確認してください:それはあなたを助けることを願ってhttp://stackoverflow.com/questions/1241178/mysql-rows-to-columns –