我有一张OFFICE_HOURS表,其中包含办公室(现场)医生的工作时间数据。从源系统加载此表时,存在一些问题,并且数据加载不正确。
对于phy_id,site_id组合,小时应该相同(重复不重要。)所以我需要更新表,所以phy_id的第一行中的小时数,site_id组合应该用于更新具有相同phy_id,site_id组合的其余行。
实际和预期结果如下。请帮忙。
答案 0 :(得分:1)
如果你不介意任何时间
UPDATE OFFICE_HOURS o
SET HOURS = (SELECT min(HOURS)
FROM OFFICE_HOURS f
WHERE f.phy_id = o.phy_id
and f.site_id = o.site_id
)
如果你想要更复杂的东西,并有选择来处理所选的小时。
with office as (
SELECT *,
row_number() over (partition by phy_id, site_id order by hours) as rn
FROM OFFICE_HOURS
)
UPDATE office o
SET hours = (SELECT HOURS
FROM office f
WHERE f.phy_id = o.phy_id
and f.site_id = o.site_id
and f.row_id = 1