我有一张表格如下:
如您所见,列officebudge
已更新为所有单个办事处的值。我希望update
只发生在前1个办公室
如下所示:
任何更新前1名记录的建议? 我使用下面的代码。但它会更新所有办公室条目:
UPDATE budget
SET officebudge = ISNULL(ProjectedReturnCount,0)
FROM analyticsdata
join
(
select ofc.officeid,ofc.week,
max(ISNULL(ofc.ProjectedReturnCount,0)) ProjectedReturnCount
from
BudgetOffice ofc
INNER JOIN budget anal
on ofc.OfficeID = anal.OfficeID
and ofc.Week = anal.week
and ofc.RowStatus = 'a'
group by ofc.OfficeID,ofc.week
)z
on (z.officeid = budget.OfficeID
and z.Week = budget .week )
感谢您的帮助。我附上了一个sql小提琴来证明这一点。
答案 0 :(得分:1)
您可以像这样使用CTE(我只使用了几个您提供的列)
;With cte As
(Select *, Row_Number() Over(Partition By OfficeID order by RowID) As rn
From Employee)
update cte set OfficeBudge = 0 where rn>1
select * from Employee
找到附带的小提琴 的 sql fiddle demo 强>
答案 1 :(得分:0)