0
我在使用Microsoft SQL Server時遇到困難。我有一張表,其中有一列開始時間,以秒爲單位7200(換班2小時)以及結束時間和持續時間。帶有開始時間和結束時間的SQL事件,轉換爲小時轉換
我需要按小時對事件持續時間進行分組。
我的查詢是目前:
SELECT
e.eqmtid as LoadUnit
,r.name as Reason
,e.starttime
,e.endtime
,e.duration
FROM
sh_status_events e
INNER JOIN
PIT_ReasonCodes r
ON e.reason = r.reason
WHERE
e.shiftindex >= <STARTSHIFTINDEX>
AND e.shiftindex <= <ENDSHIFTINDEX>
返回結果:
LoadUnit Reason starttime endtime duration
EX022 OPERATING 0 1008 1008
EX022 OPERATING 1008 2898 1890
EX022 OPERATING 2898 3535 637
EX022 OPERATING 3615 4515 900
EX022 OPERATING 4515 4541 26
EX022 OPERATING 4885 5555 670
但我需要按小時,如:
Hour Reason Duration
1stHour Operating 2400
2ndHour Operating 1000
3rdHour Operating 3200
4thHour Operating 3600
5thHour Operating 3600
6thHour Operating 1322
,我可以做的,但對於任何一個小時開始並在另一個小時結束的事件,它不會把時間帶到下一個小時。
例如賽事從90分鐘開始並持續1小時,應該是
2ndHour Operating 1800
3rdHour Operating 3600
但是它會把整個5400放到第二個小時。
有沒有任何可協調的方法來解決這個問題?
非常感謝您的答覆!這正是我需要它做的小提琴,但它不工作時,我試圖通過我的數據庫運行它:(使用Microsoft SQL Server 2008 R2(SP1) - 10.50.2550.0(X64)我無法弄清楚爲什麼它不起作用,所有這些命令都可以在早期版本中使用? – Jakose
是的,這也適用於sql 2008 R2。 – ughai
我必須在頂部添加'SET NOCOUNT ON',因爲它與引擎聲明貫穿始終,不能夠感謝你,這讓我省了很多心痛。 – Jakose