繁体   English   中英

子查询选择行作为列(数据透视)

[英]Sub-query select rows as columns (pivot)

SELECT j.departure, stopDepartures.*
FROM journey j
JOIN journey_day ON journey_day.journey = j.id
JOIN service ON service.id = j.service
JOIN pattern ON j.pattern = pattern.id
JOIN (
    SELECT section, pl.from_stop
    FROM pattern_link pl
    WHERE pl.section = section
) stopDepartures ON stopDepartures.section = pattern.section
WHERE service.id = "59924-44-X4-B-y10-2" AND journey_day.day = 1 AND pattern.direction = "outbound" AND DATE(NOW()) BETWEEN service.date_start AND service.date_end
GROUP BY j.id
ORDER BY departure ASC;

目前,上述查询的结果如下所示:

`departure` | `section` | `from_stop`
    07:00    some_var_id  some_var_id

但是stopDepartures实际上为每个section返回许多from_stop字段,但我只会看到第一个。 如何更改stopDepartures连接,使其像数据透视表一样工作,并将每个from_stop返回为一列 (很多列,而不是每个第一个from_stop值1列)

如果我正确理解,这可能会做您想要的。 代替:

SELECT j.departure, stopDepartures.*

做:

SELECT j.departure, group_concat(from_stop)

这会将所有值放入以逗号分隔的列表中。 这不是每个单独的列,但是它可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM