sql server 2008中'select'查询导致的所有持续时间的总和

Shr*_*nil 1 sql sql-server sql-server-2008

我的表包括列的StartTimeEndTimedatetime数据类型.我使用此查询计算了这两列的持续时间:

SELECT   
   StartTime, EndTime, 
   DATEDIFF(s, StartTime, EndTime) AS duration 
FROM tbl_record 
WHERE StartTime >= @starttime AND StartTime < @endtime 
ORDER BY StartTime DESC 
Run Code Online (Sandbox Code Playgroud)

如何计算sql查询中的持续时间总和.这可以使用脚本完成,但如何在数据库查询中完成?我添加了类似的东西

  SELECT SUM(duration) as total
Run Code Online (Sandbox Code Playgroud)

显示错误:

持续时间无效列

Lie*_*ers 5

你不能使用这样的别名.您必须在总和中使用原始计算,并将其作为duration

SELECT   SUM(datediff(s,StartTime,EndTime)) as duration 
FROM     tbl_record 
where    StartTime >= @starttime 
         and StartTime < @endtime 
Run Code Online (Sandbox Code Playgroud)

或使用原始语句作为子选择,以便能够duration在外部选择中使用别名.

SELECT   SUM(duration)
FROM     (
          SELECT   datediff(s,StartTime,EndTime) as duration
          FROM     tbl_record 
          where    StartTime >= @starttime 
                   and StartTime < @endtime 
         ) d
Run Code Online (Sandbox Code Playgroud)