34,587
社区成员
发帖
与我相关
我的任务
分享
SELECT a.姓名,a.性别,a.空腹血糖1,b.空腹血糖2,a.身高1,b.身高2
FROM 表2 a
CROSS APPLY(SELECT MAX(CASE WHEN 项目 = '空腹血糖2' THEN 结果 ELSE NULL END) AS [空腹血糖],
MAX(CASE WHEN 项目 = '身高2' THEN 结果 ELSE NULL END) AS [身高2]
FROM 表1
WHERE 姓名 = a.姓名
GROUP BY 姓名) b
update 表2
set 空腹血糖2=(select 结果 from 表1 where 表1.姓名= 表2.姓名 and 表1.项目='空腹血糖2')
,身高2=(select 结果 from 表1 where 表1.姓名= 表2.姓名 and 表1.项目='身高2')
create table 表1
(姓名 varchar(20), 性别 varchar(20), 项目 varchar(20), 结果 varchar(20))
insert into 表1
select '张三', '男', '空腹血糖2', '1.9' union all
select '张三', '男', '身高2', '172' union all
select '李四', '男', '空腹血糖2', '1.7' union all
select '李四', '男', '身高2', '169'
create table 表2
(姓名 varchar(20), 性别 varchar(20), 空腹血糖1 varchar(20), 空腹血糖2 varchar(20), 身高1 varchar(20), 身高2 varchar(20))
insert into 表2
select '张三', '男', '1.5', null, '173', null union all
select '李四', '男', '1.8', null, '168', null
update t2
set t2.空腹血糖2=t1.空腹血糖2,
t2.身高2=t1.身高2
from 表2 t2
inner join (select 姓名,[空腹血糖2],[身高2]
from 表1 a
pivot(min(结果) for 项目 in([空腹血糖2],[身高2])) p) t1 on t2.姓名=t1.姓名
select * from 表2
/*
姓名 性别 空腹血糖1 空腹血糖2 身高1 身高2
-------------------- -------------------- -------------------- -------------------- -------------------- --------------------
张三 男 1.5 1.9 173 172
李四 男 1.8 1.7 168 169
(2 row(s) affected)
*/