2017-10-05 25 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'。然後,我們將所有這些結果加在一起以產生該事件的多列計數。

然後我們GROUP BY id來只計算每個id的行。

雖然這可能是一個更優雅的方法。

+0

謝謝克里斯J,我已經嘗試過,它爲我工作......非常感謝你...... –