我有tbl1包含m_code字段,我需要使用某些值更新tbl2中的p_code和e_code字段。例如,如果m_code = S,那么我想将P_code设置为1,将e_code设置为10.我已经写了一个select语句来说明我想如何根据tbl1中的不同值代码显示字段值。 我需要帮助编写查询..
select
case
when e.m_code = 'S' then s.P_CODE = 1 and s.E_CODE = 10
when e.m_code = 'H' then s.P_CODE = 2 and s.E_CODE =5
when e.m_code = 'E' then s.P_CODE = 3 and s.E_CODE =6
when e.m_code = 'P' then s.P_CODE = 8 and s.E_CODE = 2
when e.m_code ='R' then s.P_CODE = 3 and s.E_CODE =1
end
from
tbl1 e
join tbl2 s on e.field = s.field
where s.m_code in ('S','H','E', 'P', 'R')
答案 0 :(得分:3)
Update s
SET s.P_CODE = CASE
when e.m_code = 'S' then 1
when e.m_code = 'H' then 2
when e.m_code = 'E' then 3
when e.m_code = 'P' then 8
when e.m_code = 'R' then 3
END
,s.E_CODE = CASE
when e.m_code = 'S' then 10
when e.m_code = 'H' then 5
when e.m_code = 'E' then 6
when e.m_code = 'P' then 2
when e.m_code = 'R' then 1
END
from tbl1 e join tbl2 s
on e.field = s.field
where s.m_code in ('S','H','E', 'P', 'R')
答案 1 :(得分:0)
update s
set p_code = x.p
, e_code = x.e
from tbl2 s
inner join tbl1 e
on e.field = s.field
inner join
(
select 'S' x, 1 p, 10 e
union select 'H', 2, 5
union select 'E', 3, 6
union select 'P', 8, 2
union select 'R', 3, 1
) x
on x.x = e.m_code
where s.m_code in ('S','H','E', 'P', 'R')