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()
,结果是一样的。