2013-11-26 161 views
2

重寫數據我有記錄的處理基於子查詢

DateTime    Rate 
2013-11-25 05:00:00  22 
2013-11-25 06:00:00  78 
2013-11-25 07:00:00  33 
2013-11-25 07:10:00  56 
2013-11-25 08:30:00  12 

以及記錄時間週期的停機時間表的速度,其中上述數據可能是無效的一價格表

StartDateTime    EndDateTime 
2013-11-25 04:59:00   2013-11-25 05:10:00 
2013-11-25 07:00:00   2013-11-25 07:15:00 

如何在停機時間表中的任何時間段之間記錄的任何速率值由固定值替換時獲得以下輸出,例如50?

DateTime    Rate 
2013-11-25 05:00:00  50 
2013-11-25 06:00:00  78 
2013-11-25 07:00:00  50 
2013-11-25 07:10:00  50 
2013-11-25 08:30:00  12 

回答

3

這應該做的伎倆:

SELECT r.datetime, if(d.startDatetime IS NULL, r.rate, 50) rate 
FROM rates r 
LEFT JOIN downtime d 
ON r.datetime BETWEEN d.startDatetime AND d.endDatetime 

小提琴here

+0

正是我想要的,像魅力一樣工作; if(d.startDatetime IS NULL,r.rate,50)是什麼逃避我。謝謝。 –