2017-10-05 8 views
-1

をカウントするために、私はテーブルを持っていることは条件で採用:どのように特定の条件で行ごとに

H=Hour, P=Present, S=Sick, A=Alpha 

ID Name H1 H2 H3 H4 P S A 
1 AAA h h h h 
2 BBB s s h h 
3 CCC a h h h 

このような結果を取得する方法:

ID Name H1 H2 H3 H4 P S A 
1 AAA h h h h 4 0 0 
2 BBB s s h h 2 2 0 
3 CCC a h h h 3 0 1 

私は2日間の閲覧と閲覧されている、試してみて、私はそれを解決するためにmysqlクエリを実行することができます把握することはできません...

おかげで私の悪い英語をお待ちしております。

+1

データの内容と列名を確認するのが非常に難しい –

答えて

0

私はデータがあなたの記事であるかについて、いくつかの仮定を作った、と私は次のクエリは、あなたが一緒に入れしようとしていたものかもしれないと思う:

SELECT 
id 'ID', 
name 'Name', 
h1 'H1', 
h2 'H2', 
h3 'H3', 
h4 'H4', 
SUM(if(h1='h',1,0)+if(h2='h',1,0)+if(h3='h',1,0)+if(h4='h',1,0)) as 'P', 
SUM(if(h1='s',1,0)+if(h2='s',1,0)+if(h3='s',1,0)+if(h4='s',1,0)) as 'S', 
SUM(if(h1='a',1,0)+if(h2='a',1,0)+if(h3='a',1,0)+if(h4='a',1,0)) as 'A' 
FROM myTable 
GROUP BY id 

は、カラム名を無視して自由に感じますそれはあなたが投稿したものと一致するだけです。

基本的に、各フィールドの各列の値の出現をチェックしています。存在する場合は「1」を返し、存在しない場合は「0」を返します。次に、これらの結果をすべて加算して、その発生の複数列カウントを生成します。

次に、各IDの行だけを数えるGROUP BY idです。

ただし、これを行うためのよりエレガントな方法があります。

+0

Chris Jさん、お試しいただきありがとうございました...あなたに感謝しています... –

関連する問題