2017-10-05 27 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,我已经尝试过,它为我工作......非常感谢你...... –