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'产生你需要组合的多行。不幸的是,我现在缺乏时间进一步帮助,但也许我的分析有帮助... –