我是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
我使用的数据集非常庞大且有多个产品
答案 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