我有条件雇用条件:
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查询来解决这个问题...
提前致谢并抱歉我的英语不好
答案 0 :(得分: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的行。
尽管如此,可能有一种更优雅的方式。