【发布时间】:2016-12-31 11:05:32
【问题描述】:
我想查看过去 3 个月(即 90 天)工作时间最长的培训师的数据。我创建了一个存储过程来查看前3个月的小时总和,现在我只想添加group by子句(group by trainer)
这是我的存储过程,请给我建议我需要做的更改
begin
declare @h int
declare @m int
declare @tm int
declare @min int
declare @count int
declare @d varchar(30)
declare @dt datetime
declare @d1 varchar(30)
declare @dt2 datetime
declare @dt1 datetime
set @dt = (select convert(datetime, (dateadd(day, -90, getdate())), 105))
set @d = (select convert(varchar, @dt, 105))
set @dt1 = (select convert(datetime, getdate(), 105))
set @d1 = (select convert(varchar, @dt1, 105))
set @dt2 = (select convert(datetime, @d1, 105))
set @h = (SELECT SUM(DATEPART(hh, (convert(datetime, hrs, 1))))
FROM sonvininsert
WHERE date BETWEEN convert(datetime, @d, 105) AND convert(datetime, @d1, 105)
AND instructore = 'primary'
AND status = '0'
GROUP BY trainer)
set @tm = (SELECT SUM(DATEPART(mi, (convert(datetime, hrs, 1))))
FROM sonvininsert
WHERE date BETWEEN convert(datetime, @d, 105) AND convert(datetime, @d1, 105)
AND instructore = 'primary'
AND status = '0'
GROUP BY trainer)
set @m = @tm / 60
set @min = @tm % 60
set @h = @h + @m
select @h as hour
end
出现以下错误:
消息 512,第 16 级,状态 1,第 25 行
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。消息 512,第 16 级,状态 1,第 30 行
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
我希望我的查询是这样的
group by trainer
order by trainer desc
【问题讨论】:
-
你想为所有
trainers做这个? -
@Prdp 是的,我想和所有教练一起做这个
标签: sql sql-server group-by sum sql-order-by