1

私のテーブルは、列StartTimeとデータ型EndTimeで構成されています。datetimeこのクエリを使用して、この 2 つの列から期間を計算しました。

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

そのようなエイリアスは使用できません。合計とエイリアスで元の計算を使用する必要があります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 に答える