DBMS:SQL Server 2012
我有一个包含以下列的表
我需要做的是找出NextCarDepartureTime
。因此,例如,Car2将于2014年9月30日1:12 AM离开,Car3将于2014年10月10日12:10离开。最终目标是找出CarDepartedDateTime
和NextCarDepartedTime
之间的小时差异。所以最终结果看起来像
任何帮助将不胜感激!感谢
答案 0 :(得分:3)
您可以使用SQL Server 2012中引入的LEAD
分析函数。此函数可以访问表中的后续行。所以你的查询现在看起来像这样 -
window
我在博客上写了一篇关于分析功能的博文:krishnrajrana.wordpress.com
答案 1 :(得分:2)
这将是您需要的基本语法:
SELECT
T1.Year, T1.Month, T1.CarNumberID, T1.CarDepartedDateTime, T1.NextCarNumberID,
T2.CarDepartedDateTime as [NextCarDepartureTime],
CONVERT(varchar,(T2.CarDepartedDateTime - T1.CarDepartedDateTime, 108) as [Turn Around Time]
FROM
DatabaseName..TableName T1
Left outer join DatabaseName..TableName T2 on T2.CarNumberID = T1.NextCarNumberID
根据表格中的其他详细信息(主键等),您可能希望向联接筛选器和/或WHERE
子句添加详细信息。
有多种选项可供您使用[Turn Around Time]
函数的最后一个参数的不同值格式化/显示CONVERT
字段。有关不同选项的列表,请参阅https://msdn.microsoft.com/en-us/library/ms187928.aspx。