具有日期时间的多列上的分组

时间:2016-12-09 13:47:04

标签: sql-server group-by

我在2个独立的SQL Server上有一对表,它们有我需要的数据和相同的列。我已经使用Union All将它们放入单个表中进行查询,但是当我尝试使用group by获取BatchID,Start Time和End Time时,我收到错误。

我的查询:

 Select BatchID, cast(StartTime as datetime2(0)) as StartTime,
        cast(EndTime as datetime2(0)) as EndTime 
 from derp 
 group by BatchID, Cast(StartTime as Date), Cast(EndTime as Date)

我的错误:

  

Msg 8120,Level 16,State 1,Line 3      列'derp.StartTime'在选择列表中无效,因为它不包含在聚合函数或GROUP BY中   子句。

我在group by子句中有开始时间和结束时间,但它说我没有。我在这做错了什么?

1 个答案:

答案 0 :(得分:2)

您必须在CAST条款中DATESELECT

 Select BatchID, Cast(StartTime as Date), Cast(EndTime as Date)
 from derp 
 group by BatchID, Cast(StartTime as Date), Cast(EndTime as Date)