创建对语句的查询(TSQL)

创建对语句的查询(TSQL),sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个具有不同功能和步骤的日志文件: 我需要的是整个功能的持续时间。 这是我迄今为止的声明: SELECT [Id] ,[Func] ,[Step] ,[Timestamp] ,CAST((SELECT [Timestamp] FROM [LiPimDb].[dbo].[Log_Export_Catalog] WHERE [Id] = [Log].[Id]+1)-[Timestamp]AS

我有一个具有不同功能和步骤的日志文件:

我需要的是整个功能的持续时间。 这是我迄今为止的声明:

SELECT [Id]
      ,[Func]
      ,[Step]
      ,[Timestamp]
      ,CAST((SELECT [Timestamp] 
             FROM [LiPimDb].[dbo].[Log_Export_Catalog] 
             WHERE [Id] = [Log].[Id]+1)-[Timestamp]AS TIME(3)) AS Duration 

FROM [LiPimDb].[dbo].[Log_Export_Catalog] AS [Log]

WHERE Func = 'SP_Create_Export_Catalog'

我是否需要获取子查询,然后获取持续时间的总和

从您的表格中,我想说您需要的只是
end
start
之间的差异

由于这似乎是一个存储过程,最简单的可能是这样的:

DECLARE @startTime DATETIME=GETDATE();
...Your code here ...
DECLARE @duration TIME=CAST(GETDATE()-@startTime AS TIME);
SELECT @duration;

最后一个值可能会插入到您的日志表中以便于检索…

看起来很简单
GROUP BY
就是您所需要的:

SELECT
    Func
    ,DATEDIFF(second, MAX(Timestamp), MIN(Timestamp)) AS DurationSeconds
FROM [LiPimDb].[dbo].[Log_Export_Catalog] AS [Log]
WHERE Func = 'SP_Create_Export_Catalog'
GROUP BY Func

删除
WHERE
过滤器以查看每个函数的持续时间。

您使用的是哪个版本的SQL server,您能否生成一些示例数据和一些预期输出