我有一些关于电车和他们去的电台的数据。每辆电车都有一种颜色(蓝色,黄色,紫色),它们在不同时间到达车站。我正在尝试对数据进行分组,以便它们作为特定站点到达的时间将显示在一行中。
例如我有以下数据行
ID stationID colour time
1 11 Yellow 13:00
2 11 Blue 14:14
3 11 Purple 15:30
我想将其分组到以下内容:
StationID YellowTime BlueTime PurpleTime
11 13:00 14:14 15:30
我正在使用案例陈述和小组来做这件事,但是我得到了意想不到的结果。
我的查询在
之下SELECT StationID,Station_name,
(CASE
WHEN ID=1 THEN Time
ELSE 'Does not come to this station' END) AS YellowTime,
(CASE WHEN ID=3 THEN Time
ELSE 'Does not come to this station' END) AS BlueTime,
(CASE WHEN ID=2 THEN Time
ELSE 'Does not come to this station' END) AS PurpleTime
FROM tram
where Station_name like '%Cathedral%'
group by StationID
我得到的结果如下
StationID Station_Name YellowTime BlueTime PurpleTime
11 Cathdral Does not... Does no.. 10:57:00
它只显示数据集中最后一条记录的时间,而不是全部三条记录。
P.s.yellowTime和blueTime列的值不会到达此站,但我还没有完全写出来以便将它们全部放在一行上。
提前感谢您的帮助。
答案 0 :(得分:0)
我认为这可能有助于遇到这种情况的任何人。我设法找到另一个wya来获得我想要的结果。 我正在使用连接到同一个表,因为case语句不起作用。
这是我使用的查询
SELECT t.StationID,t.Station_name ifnull(t1.Time,'不来这个电台')as yewllowTime, ifnull(t2.Time,'不来这个电台')为purpleTime, ifnull(t3.Time,'不来这个电台')为BlueTime 从电车t 左连接(选择StationID,时间 从电车 其中ID = 1)t1 在t.StationID = t1.StationID上 左连接(选择StationID,时间 从电车 其中ID = 2)t2 在t.StationID = t2.StationID上 左连接(选择StationID,时间 从电车 其中ID = 3)t3 在t.StationID = t3.StationID上 其中station_name喜欢'%Cathedral%' 按t.StationID分组
使用此查询,我得到1行,根据需要为每种颜色提供所有不同的时间。
希望这可以帮助有同样问题的人。