Mysql 垂直柱结果为水平

Mysql 垂直柱结果为水平,mysql,sql,datetime,pivot,max,Mysql,Sql,Datetime,Pivot,Max,我需要将一个列结果放在水平位置,比如SUM(状态为'On Hold'时的CASE,然后是1 ELSE 0 END)作为'word'do,我也尝试了子查询和别名AS,但没有成功。我认为连接是对多个表的连接,并在同一列中联合以获得结果 我用这一页作为参考 mysql表:phpvms\u pireps pilotid | flightnum | submitdate |接受 我的sql代码: SELECT DISTINCT `phpvms_pireps`.`pilotid` , `phpv

我需要将一个列结果放在水平位置,比如
SUM(状态为'On Hold'时的CASE,然后是1 ELSE 0 END)作为'word'
do,我也尝试了子查询和别名AS,但没有成功。我认为连接是对多个表的连接,并在同一列中联合以获得结果

我用这一页作为参考

mysql表:phpvms\u pireps

pilotid | flightnum | submitdate |接受

我的sql代码:

SELECT DISTINCT `phpvms_pireps`.`pilotid`
     , `phpvms_pireps`.`accepted`
     , `phpvms_pireps`.`flightnum`
     , `phpvms_pireps`.`submitdate`
  FROM phpvms_pireps
 WHERE ((`phpvms_pireps`.`flightnum` in ('A-1', 'A-2', 'A-3', 'A-4')))
   AND submitdate BETWEEN '2020-04-09' AND '2020-04-11'
 ORDER 
    BY `phpvms_pireps`.`pilotid` ASC
结果:

SELECT DISTINCT `phpvms_pireps`.`pilotid`
     , `phpvms_pireps`.`accepted`
     , `phpvms_pireps`.`flightnum`
     , `phpvms_pireps`.`submitdate`
  FROM phpvms_pireps
 WHERE ((`phpvms_pireps`.`flightnum` in ('A-1', 'A-2', 'A-3', 'A-4')))
   AND submitdate BETWEEN '2020-04-09' AND '2020-04-11'
 ORDER 
    BY `phpvms_pireps`.`pilotid` ASC

我想实现这一点:

SELECT DISTINCT `phpvms_pireps`.`pilotid`
     , `phpvms_pireps`.`accepted`
     , `phpvms_pireps`.`flightnum`
     , `phpvms_pireps`.`submitdate`
  FROM phpvms_pireps
 WHERE ((`phpvms_pireps`.`flightnum` in ('A-1', 'A-2', 'A-3', 'A-4')))
   AND submitdate BETWEEN '2020-04-09' AND '2020-04-11'
 ORDER 
    BY `phpvms_pireps`.`pilotid` ASC

我使用的是php/html,如何才能得到这个结果


多谢各位

您正在描述一个透视表。考虑使用条件聚合:

select 
    pilotid, 
    max(case when flightnum = 'A-1' then accepted end) a1,
    max(case when flightnum = 'A-2' then accepted end) a2,
    max(case when flightnum = 'A-3' then accepted end) a3,
    max(case when flightnum = 'A-4' then accepted end) a4
from phpvms_pireps 
where 
    flightnum in ('A-1', 'A-2', 'A-3', 'A-4')
    and submitdate between '2020-04-09' and '2020-04-11'
group by pilotid
order by pilotid

考虑应用程序代码中的数据显示问题。你的意思是什么?我的意思是GMB建议的相反。@ GMB我删除了A4之后的一个错误:“在分析过程中发现了1个错误。预期有一个表达式。(接近于“在位置264”)“max”是什么?就在这里?@arv187:我们希望每个飞行员都有一条记录,所以我们
按pilotid分组
。我们需要一个围绕
case
表达式的聚合函数,即使只有一行与条件匹配。我们也可以使用
min()
,结果是一样的。