通过更改布尔值进行分组

时间:2014-05-06 14:04:39

标签: mysql sql

您好我有以下SQL问题:

SELECT station_id, filling_station_status,date_created ,
  case when filling_station_status="FREE" then 0
      else 1 end  as status  
FROM efahrung.electric_station_time_status 
where station_id=11

在我的表中有一列fill_station_status。 它可以是“FREE”或“IN_USE”。

我想对元素进行分组,如果fill_station_status被更改(从“FREE”到“IN_USE”),它将在我的情况下创建一个日期范围date_created。 在下一次从(“IN_USE”到“FREE”)的更改中,它会创建一个新的日期范围。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

如果你只需要SQL查询来在输出中生成日期范围,那么试试这个:

Select s.station_id, 
    Coalesce(e.filling_station_status, s.filling_station_status) fillingStationStatus, 
    case e.filling_station_status 
      when "FREE" then 0 else 1 end status,
    s.date_created startDate,
    e.date_created endDate
From efahrung.electric_station_time_status s
   Left Join efahrung.electric_station_time_status e
       On e.station_id = s.station_id
          and s.filling_station_status = 'IN_USE'
          and e.filling_station_status = 'FREE'
          and e.date_created =
               (Select Min(date_created)
                From efahrung.electric_station_time_status 
                Where station_id = s.station_id
                   and date_created > s.date_created)