使用SUM嵌套的select语句

时间:2012-03-27 14:58:32

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

我想知道是否可以写一个嵌套的选择陈述?

我有以下计算预订时间:

SELECT description, SUM(ts.booked_time) AS booked_time_total, 
CONVERT(VARCHAR(11), @testDate, 106) AS month_name, @week_ref AS week_ref
FROM timesheets ts

WHERE @testDate <= convert(datetime, end_dtm, 120) and 
      dateadd(wk, 1, @testDate) > convert(datetime, start_dtm, 120)

但是预订的时间似乎是错误的。 SUM不应该计算start_dtm和end_dtm内每一行的总和。因此,如果我在预订时间内有10行1,那么SUM将为10。

测试数据:

enter image description here

2 个答案:

答案 0 :(得分:4)

SUM计算字段的总值,而COUNT是记录总数。

SELECT description, 
       COUNT(ts.booked_time) AS booked_time_total, 
       CONVERT(VARCHAR(11), @testDate, 106) AS month_name, 
       @week_ref AS week_ref
FROM timesheets ts
WHERE @testDate <= convert(datetime, end_dtm, 120) and 
      dateadd(wk, 1, @testDate) > convert(datetime, start_dtm, 120)

答案 1 :(得分:3)

我认为您希望使用COUNT而不是SUM。