Sql server SQL Server 2014-如何仅从datetime列按日期分组

Sql server SQL Server 2014-如何仅从datetime列按日期分组,sql-server,group-by,grouping,Sql Server,Group By,Grouping,我有一个表,每15分钟列出一次数据。因此,我的日期列数据类似于“2017-04-18 00:15:00.000” 我试图得到那一整天这些列的总和,但我的分组不起作用 SELECT Sum(Field 1), Sum(Field 2), Sum(Field 3) FROM MyTable WHERE StartDate >= '2017-04-18' AND StartDate <= '2017-04-19' GROUP BY

我有一个表,每15分钟列出一次数据。因此,我的日期列数据类似于“2017-04-18 00:15:00.000”

我试图得到那一整天这些列的总和,但我的分组不起作用

SELECT 
    Sum(Field 1),
    Sum(Field 2),
    Sum(Field 3)
FROM 
    MyTable
WHERE 
    StartDate >= '2017-04-18'
    AND StartDate <= '2017-04-19'
GROUP BY 
    CAST(StartDate AS DATE)
    --GROUP BY CONVERT(CHAR(10),StartDate,103)
    --GROUP BY StartDate
我试过:

GROUP BY CAST(StartDate AS DATE) 
以及

GROUP BY CONVERT(CHAR(10), StartDate, 103)
上述两个group by子句给出了相同的错误消息:

列“StartDate”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中


如何按日期对数据进行分组,以便将数据按日期分组为“2017-04-18”

您可以尝试以下查询

SELECT 
      CAST(StartDate AS DATE) as S
      ,Sum(Field 1)
      ,Sum(Field 2)
      ,Sum(Field 3)

FROM MyTable

WHERE StartDate >= '2017-04-18'
  AND StartDate <= '2017-04-19'

GROUP BY CAST(StartDate AS DATE)
选择
铸造(起始日期为日期)为S
,总和(字段1)
,总和(字段2)
,总和(字段3)
从MyTable
其中起始日期>='2017-04-18'

和StartDate不要将
StartDate
放在您的选择中。相反,将
CAST(STartdate作为日期)作为STartdate
放在您的选择中,以便它与您的组匹配。@jevill在选择中不是必需的我想谢谢JNevill和@KannanKandasamy。成功了。可能是重复的
SELECT 
      CAST(StartDate AS DATE) as S
      ,Sum(Field 1)
      ,Sum(Field 2)
      ,Sum(Field 3)

FROM MyTable

WHERE StartDate >= '2017-04-18'
  AND StartDate <= '2017-04-19'

GROUP BY CAST(StartDate AS DATE)