Sql 混淆求和结果
我有三张桌子,如下所示Sql 混淆求和结果,sql,sql-server,inner-join,Sql,Sql Server,Inner Join,我有三张桌子,如下所示 使用者 状态表 时间跟踪器 其关系如下 用户有username和userid,StatusTable有username和Time\u Tracker有username 下面是我的表格数据 在这里,我想得到总数 问题: 我想通过将案例所有者加入用户名和TT.userId=Users.userId以及登录=GetDate(),将生产时间更新为所用时间[分钟]的总和 我的问题是 update Time_Tracker set ProductionTime = (select
username
和userid
,StatusTable有username
和Time\u Tracker有username
下面是我的表格数据
在这里,我想得到总数
问题:
我想通过将案例所有者
加入用户名
和TT.userId=Users.userId
以及登录=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
我怎样才能解决这个问题
谢谢我认为子查询中的
join
s太多了:
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);
您的版本是将时间跟踪器
中每一行的结果相乘。关联子句就是您所需要的
也很重要。这样的相关子查询不应该有
GROUPBY
子句。groupby
可以返回多行,但根据定义,相关子查询最多应返回一行。我认为子查询中的join
s太多了:
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);
您的版本是将时间跟踪器
中每一行的结果相乘。关联子句就是您所需要的
也很重要。这样的相关子查询不应该有
GROUPBY
子句。分组依据
可以返回多行,但根据定义,相关子查询最多应返回一行。是的,对返回5倍值的查询进行右键操作,以便在更新之前选择值以确保正确。嗨,朋友,感谢此解决方案,这非常有效。另外,我忘了在我的问题中提到,有没有一种方法可以在更新时获取会话元素,比如where userid=session element
@user3872094。我认为你应该把一个新问题作为一个问题而不是在评论中提问。嗨@GordonLinoff,我已经按照你的建议发布了一个新的问题。就在这里,你能看看吗。再次感谢是的,请更正您返回5倍值的查询,以便您可以在更新之前选择值来确保它。嗨,朋友,感谢您提供此解决方案,这非常有效。另外,我忘了在我的问题中提到,有没有一种方法可以在更新时获取会话元素,比如where userid=session element
@user3872094。我认为你应该把一个新问题作为一个问题而不是在评论中提问。嗨@GordonLinoff,我已经按照你的建议发布了一个新的问题。就在这里,你能看看吗。再次感谢