创建对语句的查询(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,您能否生成一些示例数据和一些预期输出