我有一个查询,提醒我需要将名为health_home的行标记为' Y'而不是null,但只有180个人在他们的查询中,只有他们的最大一集。不知道如何做好改变仍然保持最大插曲。我的查询和结果如下所示。提前谢谢你,我正在运行sql server 2005.
select
patient_id,
episode_id,
health_home
from (select p.*,
max(episode_id) over (partition by patient_id) as maxei
from patient_custom p) p
where patient_id in ('00017186', '00000308', '00007226', '000147016', '00017016', '00001355', '00000666', '00019633', '00020048', '00008553',
'00011520', '00004374', '00000485', '00000578', '00000040', '00008686', '00001983', '00001051', '00020168', '00012135', '00000591',
'00000171', '00000998', '00003820', '00015625', '00001160', '00019386', '00020625', '00015930', '00007269', '00002913', '00003325',
'00013529', '00020454', '00001439', '00017131', '00003488', '00006453', '00004982', '00000888', '00020433', '00011334', '00016275',
'00013526', '00013103', '00017936', '00002654', '00019942', '00018198', '00008726', '00012458', '00020579', '00014071', '00004858',
'00013110', '00002799', '00000170', '00000617', '00018516', '00020896', '00002229', '00016442', '00000828', '00020204', '00013838',
'00019351', '000202763', '00010412', '00020429', '00020504', '00002041', '00016633', '00019463', '00007017', '00000307', '00005067',
'00015469', '00013147', '00015511', '00000822', '00008882', '00001368', '00000036', '00000036', '00016745', '00010081', '00011721',
'00003569', '00000599', '00018126', '00001579', '00015647', '00016056', '00002281', '00008362', '00000744', '00019227', '00018016',
'00003315', '00000461', '00020335', '00006962', '00018647', '00000864', '00009559', '00001997', '00014520', '00000965', '00000812',
'00003851', '00012100', '00015446', '00001392', '00014688', '00019997', '00016236', '00006070', '00019686', '00006070', '00019686',
'00019374', '00001192', '00007437', '00015716', '00014616', '00015905', '00009934', '00014047', '00016940', '00015307', '00016000',
'00007639', '00016300', '00010460', '00010460', '00007891', '00006745', '00001892', '00018362', '00006817', '00001548', '00004646',
'00016971', '00006634', '00006634', '00006631', '00011830', '00016457', '00007321', '00017669', '00006625', '00005542', '00000163',
'00007254', '00018958', '00001333', '00010767', '00005146', '00007247', '00000097', '00000835', '00000529', '00017241', '00014287',
'00012424', '00011239', '00020159', '00018979', '00005998', '00013930', '00016862', '00000395', '00004164', '00019676', '00001811',
'00011620', '00008858', '00014625', '00014778', '00018664', '00010215', '00015453', '00013298', '00019664', '00002272', '00006585',
'00010311', '00002140') and episode_id = maxei
答案 0 :(得分:1)
那么,如果您为每位患者分别分配行号并按降序编号,则要更新的行是指定为行号1的行:
;With Ordered as (
select p.*,
ROW_NUMBER() OVER (PARTITION BY patient_id
ORDER BY episode_id DESC) as rn
from patient_custom p
where p.patient_id in ('00017186', ... , '00002140')
)
update Ordered set health_home = 'Y'
where rn = 1