我有以下3个表格。
关系如下。
用户有username
和userid
,StatusTable有userName
,而Time_Tracker有userName
下面是我的表数据。
在这里,我试图获得总和
问题:
我想通过加入productiontime
加入time taken[minutes]
和case owner
以及username
login = GetDate()
的总和>
我的查询
update Time_Tracker set ProductionTime = (select sum(ST.[time taken(minutes)])
from statustable as st inner join users as u
on st.[case owner] = u.username
inner join Time_Tracker as TT
on u.userId = TT.userId
where cast(st.[Start Time] AS DATE) = CAST(GETDATE() as Date)
Group By TT.UserId, u.UserId) where CAST(Login AS DATE) = CAST(GETDATE() as Date)
我图像中的蓝框是我当前的O / p。
当我跑步时
select sum([time taken(minutes)]) as totalTme from StatusTable where cast([Start Time] AS DATE) = CAST(GETDATE() as Date)
我将O / p视为2.05
,这是正确的。
请在第一次查询(打印10.25)而不是2.05
时告诉我出错的地方。
我该如何解决这个问题。
由于
答案 0 :(得分:2)
我认为子查询中有太多join
个:
update Time_Tracker tt
set ProductionTime = (select sum(ST.[time taken(minutes)])
from statustable st inner join
users u
on st.[case owner] = u.username
where u.userId = tt.userId and
cast(st.[Start Time] AS DATE) = CAST(GETDATE() as Date)
)
where CAST(Login AS DATE) = CAST(GETDATE() as Date);
您的版本乘以TimeTracker
中每行的结果。相关条款是你需要的。
同样非常重要。这样的相关子查询不应该有GROUP BY
子句。 GROUP BY
可以返回多行,但根据定义,相关子查询最多应返回一行。