轉換一個MySQL表的結果,我們對工作的MySQL表有以下格式的數據:按規定
entityId status updated_date
-------------------------------
1 1 29/05/2017 12:00
1 2 29/05/2017 03:00
1 3 29/05/2017 07:00
1 4 29/05/2017 14:00
1 5 30/05/2017 02:00
1 6 30/05/2017 08:00
2 1 31/05/2017 03:00
2 2 31/05/2017 05:00
.
.
所以每個實體ID有6個狀態,每個狀態有一個更新的日期時間。每個狀態都附有一項活動。 例如1 - 開始旅程 2 - 已達到第一目的 3 - 左點A,朝着B.等
我需要得到在下面的格式爲特定實體ID例如3和4我需要的輸出狀態3和4的時間是獨立的。
entity_id time_started_journey time_reached_first_destination
(update time of status 3) (update time of status 4)
--------------------------------------------------------------
1 29/05/2017 7:00 29/05/2017 14:00
2 30/05/2017 7:00 30/05/2017 16:00
後來我需要計算總的時間,這將是兩者的差異。
如何用mysql我達到預期的效果。
我嘗試使用Union
運營商卻無法做到這一點單獨的列。 此外,嘗試使用案例when operator
與下面的查詢,但失敗。
select distinct entityid,
(case status when 3 then freight_update_time else 0 end)
as starttime,
(case status when 4 then freight_update_time else 0 end) as endtime
from table ;
任何人都可以點亮這個?
你在正確的軌道上的情況下表達,但你需要使用聚合(GROUP_CONCAT明確),而不是的DISTINCT,並且案例的其他部分是'else null'(聚合通常忽略空值)。至於時差問題,您需要將您的日期字符串轉換爲適當的日期值;那麼你可以使用MySQL的內置日期函數。 – Uueerdo
參見:[?我爲什麼要提供什麼,在我看來是一個非常簡單的SQL查詢的MCVE(https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve -for - 什麼 - 似乎對我將要-A-極簡單的SQL查詢) – Strawberry