Sql server 在多个具有Datetimes的列上分组
我在两个单独的SQL Server上有一对表,它们有我需要的数据和相同的列。我使用Union All将它们放入一个表中进行查询,但当我尝试使用group by获取它们的BatchID、开始时间和结束时间时,出现了一个错误 我的问题是:Sql server 在多个具有Datetimes的列上分组,sql-server,group-by,Sql Server,Group By,我在两个单独的SQL Server上有一对表,它们有我需要的数据和相同的列。我使用Union All将它们放入一个表中进行查询,但当我尝试使用group by获取它们的BatchID、开始时间和结束时间时,出现了一个错误 我的问题是: Select BatchID, cast(StartTime as datetime2(0)) as StartTime, cast(EndTime as datetime2(0)) as EndTime from derp group
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,16级,状态1,第3行
列“derp.StartTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY中
条款
我在GROUPBY子句中有开始时间和结束时间,但它说我没有。我做错了什么?您还必须在
选择
子句中将
转换为日期
:
Select BatchID, Cast(StartTime as Date), Cast(EndTime as Date)
from derp
group by BatchID, Cast(StartTime as Date), Cast(EndTime as Date)
您还必须在
SELECT
子句中CAST
到DATE
:
Select BatchID, Cast(StartTime as Date), Cast(EndTime as Date)
from derp
group by BatchID, Cast(StartTime as Date), Cast(EndTime as Date)
虽然我在DateTime2(0)中需要它们,但解决方案通过在group by子句中使用该转换来工作,谢谢加载。虽然我在DateTime2(0)中需要它们,但解决方案通过在group by子句中使用该转换来工作,谢谢加载。