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

时间:2012-05-11 09:27:37

标签: sql sql-server sql-server-2008

我的表格包含StartTime列和EndTime数据类型datetime。我使用此查询计算了这两列的持续时间:

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

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

的内容
  SELECT SUM(duration) as total

显示错误:

  

持续时间无效列

1 个答案:

答案 0 :(得分:5)

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

的别名
SELECT   SUM(datediff(s,StartTime,EndTime)) as duration 
FROM     tbl_record 
where    StartTime >= @starttime 
         and StartTime < @endtime 

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

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