【发布时间】:2020-10-26 14:03:27
【问题描述】:
我想按小时分组,并在选择列“时间”中显示全时格式(例如:12:15:56 PM) 但是当我运行时可能会显示以下错误代码。
错误:选择列表中的列“vFlowRate_hr.Time”无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
select Sum(Value) As FlowRateSum, Dir.PlantAddress, PlantType, FlowRateNo,vFlowRate_hr.Date , time
from vFlowRate_hr Inner Join DIR ON vFlowRate_hr.FlowRateID = DIR.ID
where FlowRateID = @FlowRateID and DIR.PlantType = @PlantType
and vFlowRate_hr.Date BETWEEN @FromDate AND @ToDate
group by FlowRateNo,Dir.PlantAddress,PlantType,vFlowRate_hr.Date, DATEPART(Hour, time)
【问题讨论】:
-
错误信息的哪一部分你不明白?看起来很清楚。
-
您在
GROUP BY子句中有DATEPART(Hour, time),但在SELECT列表中只有time... SQL Server 希望它保持一致;-) -
由于您是按 datepart(hour,time) 分组的,因此您在选择中的时间必须是聚合时间,即 max(time) 或按 datepart(hour,time) 匹配您的组
标签: sql sql-server database datetime group-by