0
私はどのように我々は列のみDrugLabelNameを更新することができ欄に SQL Serverの重複したIDの更新、他の列
を重複したIDを持つ列を更新するためのタスクに取り組んでいましたか?私は古いID00004029830を使用してnew_drug_nameでold_drug_nameを更新する必要がありますか?あなたは同じid
を持つすべての行が同じ名前を持つようにしたい場合は
私はどのように我々は列のみDrugLabelNameを更新することができ欄に SQL Serverの重複したIDの更新、他の列
を重複したIDを持つ列を更新するためのタスクに取り組んでいましたか?私は古いID00004029830を使用してnew_drug_nameでold_drug_nameを更新する必要がありますか?あなたは同じid
を持つすべての行が同じ名前を持つようにしたい場合は
を教えてください、あなたはウィンドウ関数を使用することができます。
with toupdate as (
select t.*,
first_value(druglabelname) over (partition by id order by intid desc) as new_druglabelname
from t
)
update toupdate
set druglabelname = new_druglabelname
where druglabelname <> new_druglabelname;
いかが?
CREATE TABLE tbl
(INTid int
,ID varchar (20)
,DrugLabelName varchar(200)
)
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 137272, '00004029830', 'old_drug_name'
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 1668177, '00004029830', 'New_drug_name'
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 1668178, '00004029831', 'Other_drug_name'
GO
UPDATE t
SET DrugLabelName = x.DrugLabelName
FROM tbl AS t
INNER JOIN tbl as x
ON t.ID = x.id
AND x.INTid > t.INTid
SELECT *
FROM tbl
DROP TABLE tbl
どのようなものが古いのか、新しいものはどのように分かりますか? –
古い名前はいつもより低いINTidを持っていますか? – Scath
レコードが最大INTidを持つ場合、古いものと新しいものがINTidに基づいています。 – shivareddy