0
我想從一個開始時間查找每個人的持續時間。我想計算從每天的1個開始時間到多個用戶的多個結束時間的持續時間。這是我的代碼:如何使用Microsoft SQL計算持續時間?
SELECT *,
CAST(DATEDIFF(n, CAST(End_Time AS datetime),
CAST(Start_Time AS datetime)) AS FLOAT)/60 AS Time_Duration
FROM
(SELECT NAME,
MAX(CASE WHEN DESCRIPTION = 'Green' THEN Final_Value END) AS Start_Time,
MAX(CASE WHEN DESCRIPTION = 'Red' THEN Final_Value END) AS End_Time
FROM mydata
WHERE NAME != ‘NA’
GROUP BY NAME
) C
我無法獲得任何持續時間的結果。 這是我的輸出是什麼樣子:
Name Start_time End_time Time_Duration
1 Day_1 5/6/15 2:30
2 John 5/6/15 3:30
3 Ben 5/6/15 4:30
4 Mike 5/6/15 5:30
5 Day_2 5/7/15 2:30
6 John_2 5/7/15 4:30
7 Ben_2 5/7/15 5:30
8 Mike_2 5/7/15 6:30
我希望它看起來像這樣:
Name Start_time End_time Time_Duration
1 Day_1 5/6/15 2:30
2 John 5/6/15 3:30 1.00
3 Ben 5/6/15 4:30 2.00
4 Mike 5/6/15 5:30 3.00
5 Day_2 5/7/15 2:30
6 John_2 5/7/15 4:30 2.00
7 Ben_2 5/7/15 5:30 3.00
8 Mike_2 5/7/15 6:30 4.00
請參閱:[爲什麼我應該爲我認爲是非常簡單的SQL查詢提供一個MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve對於什麼似乎對我來說是一個非常簡單的SQL查詢) – Strawberry
看起來像SQL服務器/ t-sql函數。你能否提供你的邏輯更多細節?你在同一行中有NULL或NULL的開始或結束時間,這就是你沒有得到正確結果的原因 – EricZ
問題:你的外層'SELECT'一次只能在一行上工作。然而,你的內部'SELECT'產生你需要組合的多行。不幸的是,我現在缺乏時間進一步幫助,但也許我的分析有幫助... –