我想仅更新列值相同的前1列或仅列1行。 (只是逻辑解释不会继续语法) 喜欢: 更新[总计] =(具有公共列的另一个表中的值) 但是只需要将前1行或任何一行更新到当前(更新)表而不是所有符合列值的行...
e.g 表1:
Skill Value
abc 3
def 4
xyz 3.5
表2:
Name Skill MyValue MyValue2(ColumnNeedsToBeUpdated)
Ram abc 3
shyam abc 4
Mohan abc 5
Raju xyz 4
Ratan xyz 6
现在我想根据MyValue2
列Table1
Skill
= Value
更新MyValue2
,但我想更新Table2
中的任何人或前1行1}} 不是全部请帮忙
预期产出:
Name Skill MyValue MyValue2(ColumnNeedsToBeUpdated)
Ram abc 3 3
shyam abc 4
Mohan abc 5
Raju xyz 4 3.5
Ratan xyz 6
OR替代输出可以是:
Name Skill MyValue MyValue2(ColumnNeedsToBeUpdated)
Ram abc 3 Value from Table1 / no. of records with skill abc (3/3)
shyam abc 4
Mohan abc 5
Raju xyz 4 Value from Table1 / no. of records with skill xyz (3.5/2)
Ratan xyz 6
答案 0 :(得分:1)
在Table 2
中,根据Skill
列的分组提供行号,并按MyValue
列排序。然后使用1
中的Value
更新了行号为Table 1
的行。
<强>查询强>
;with cte as(
select [rn] = row_number() over(
partition by Skill
order by [MyValue]
), *
from [Table2]
)
update t1
set t1.[MyValue2] = t2.[Value]
from cte t1
join [Table1] t2
on t1.[Skill] = t2.[Skill]
where t1.[rn] = 1;