1

我的表由列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

显示错误:

持续时间无效列

4

1 回答 1

5

你不能使用这样的别名。您要么必须在 sum 和 alias 中使用原始计算作为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
于 2012-05-11T09:31:23.257 回答