使用SQL将基于唯一值的两个不同名称替换为一个名称

时间:2014-02-16 04:38:14

标签: sql sql-server

我是sql的初学者,我在获得我需要的东西时遇到了问题。 我有一张表包括不同药物的品牌名称(一种药物可以是一个品牌或任何通用的等价物)。我想用一个名字来表示药物,而不是用不同的名字。表格如下:

Brand name              CN 
Lisinopril               5
Metaformin Hcl           6
Nexuim                   7
Tylenol                  8
Glucophage               6
Acetaminophen            8

CN显示药物通常是等同的。我想要的输出是创建一个只有一个名称的新列,无论两个等价产品是哪一个。输出如下:

Brand name              CN 
Lisinopril               5
Metaformin Hcl           6
Nexuim                   7
Tylenol                  8
Metaformin Hcl           6
Tylenol                  8

我使用的数据集非常庞大且有多个产品

2 个答案:

答案 0 :(得分:0)

您可以使用窗口函数min()执行此操作:

select min(brand_name) over (partition by cn) as brand_name, cn
from table t;

这将为每个brand_name分配最低cn

答案 1 :(得分:0)

您可以使用subquery执行此操作:

ALTER TABLE [TableName]
ADD [Custom Brand Name] [varchar](255)

UPDATE A
SET [Custom Brand Name] = (SELECT MIN([Brand Name]) FROM [TableName] WHERE CN = A.CN)
FROM [TableName] A