从一个子查询更新两行
Posted
技术标签:
【中文标题】从一个子查询更新两行【英文标题】:Update two rows from one subquery 【发布时间】:2020-03-31 09:23:34 【问题描述】:@tmp 表有两行有两个代码 local1 具有两个代码的值 我应该用两行代码的总和来更新@tmp
update @tmp set col1=(select sum (isnull(((isnull(e1,0.00)/100.00)
* (isnull(e2, 0))),0.00))
from @tmp tp left join
local1 l(nolock)
on l.code = tp.code
where emp_code = 123
group by code )
【问题讨论】:
请用您正在使用的数据库标记您的问题:mysql、oracle、sql-server...? 您使用的是哪个 dbms? (该代码是特定于产品的。) Microsoft SQL 服务器管理工作室 2016 @jarlh 仅供参考,SSMS 只是客户端接口,并不暗示它所连接的数据库引擎。 @Mjv 。 . .样本数据和期望的结果真的很有帮助。您的公式看起来比简单的总和要复杂得多。而且您的查询引用的列比 2 多得多。 【参考方案1】:一个选项使用窗口函数和可更新的 cte:
with cte as (select col1, sum(e1) over(partition by code) new_col1 from emp_code)
update cte set col1 = coalesce(new_col1, 0)
【讨论】:
以上是关于从一个子查询更新两行的主要内容,如果未能解决你的问题,请参考以下文章