[英]MYSQL SELECT Multiple Rows into one row
好的,这对我来说很复杂,但在这里我们是 go。
我有一个包含以下字段的家庭/个人考勤表:
| mail_no (FamilyID) | meid (个人 ID) | 日期 | 状态 (A/P)|
在家庭考勤屏幕上,我需要拉取数据并按以下格式分组:
美德 | 简 | 二月 | 三月 | 四月 | 可能 | 君 | 七月 | 八月 | 九月 | 十月 | 十一月 | 十二月 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
123 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
124 | 2 | 3 | 2 | 0 | 0 | 0 | 0 | 1 | 1 | 2 | 2 | 1 |
目前,我的 PHP 看起来像这样:
$year = "2020";
$where_clause = "AND ATDATA.mail_no='".$myrow['mail_no']."' AND ATDATA.status='A'";
SELECT meid,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-01' ".$where_clause.") as month1,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-02' ".$where_clause.") as month2,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-03' ".$where_clause.") as month3,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-04' ".$where_clause.") as month4,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-05' ".$where_clause.") as month5,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-06' ".$where_clause.") as month6,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-07' ".$where_clause.") as month7,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-08' ".$where_clause.") as month8,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-09' ".$where_clause.") as month9,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-10' ".$where_clause.") as month10,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-11' ".$where_clause.") as month11,
(SELECT COUNT(*) FROM ATDATA WHERE LEFT(ATDATA.date,7)= '".$year."-12' ".$where_clause.") as month12
FROM ATDATA
WHERE ATDATA.mail_no='".$myrow['mail_no']."' AND ATDATA.status='A'
GROUP BY meid,month1, month2, month3, month4"
我得到以下 output,它具有每行的 meid 拆分,但基础数据在 mail_no 上分组。 如何获取按 meid 分组的数据?
美德 | 简 | 二月 | 三月 | 四月 | 可能 | 君 | 七月 | 八月 | 九月 | 十月 | 十一月 | 十二月 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1752 | 5 | 7 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
198 | 5 | 7 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
199 | 5 | 7 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
嗯嘿
只需按“meid”分组,按...删除组中的月份,然后在您的 select 中计算月份 = 一月... 月 = 二月...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.