Sql server 2008 在SQLServer2008R2中如何将一个表的列转换为另一个表的列

Sql server 2008 在SQLServer2008R2中如何将一个表的列转换为另一个表的列,sql-server-2008,Sql Server 2008,我有两张桌子 History with(BU,KPI_Name,YTD,Actual,Deviation) Codes with (KPI_Name, KPI_code) 历史表的KPI_名称列的内容准确复制到代码表的KPI_名称中。这个KPI_Name值是一个长语句,我为它开发了一个“短代码”以便于理解,并复制到代码表中 现在,在历史表中,我想使用代码表的KPI_Code列,而不是历史表的KPI_name列 所以输出应该是:KPI_表,带有(BU、KPI_代码、YTD、实际值、偏差) 希望我

我有两张桌子

History with(BU,KPI_Name,YTD,Actual,Deviation)
Codes with (KPI_Name, KPI_code)
历史表的KPI_名称列的内容准确复制到代码表的KPI_名称中。这个KPI_Name值是一个长语句,我为它开发了一个“短代码”以便于理解,并复制到代码表中

现在,在历史表中,我想使用代码表的KPI_Code列,而不是历史表的KPI_name列

所以输出应该是:KPI_表,带有(BU、KPI_代码、YTD、实际值、偏差)

希望我能让你明白我的要求


我尝试了许多代码,但问题是代码表仅包含30行,执行后历史记录表的输出包含90行,因此无法正确映射代码。

如果我正确理解问题,问题是为什么代码表只包含30行,而历史记录表只包含90行。您只需查看代码中的值即可查看缺少哪些值

使用SQL,您可以:

select h.KPI_Name, c.KPI_Code  
from History h  
left outer join Codes c on c.KPI_Name = h.KPI_Name
确定代码转换的错误后,可以使用

alter table History add KPI_Code (data type)
然后通过类似以下代码填充它:

update History  
set KPI_Code = c.KPI_Code  
from History  
inner join Codes c on c.KPI_Name = History.KPI_Name

如果您无法理解KPI_代码生成不起作用的原因,请发布该代码

这对您有用吗

select H.BU, C.KPI_Code, H.YTD, H.Actual, H.Deviation
from History H
inner join Codes C
on C.KPI_Name = H.KPI_Name

是的,我试过了,但它给了我实际行数的3倍。例如,对于30行,它给我90行作为输出。可以内部连接吗?事情是,历史表是为3个业务单元准备的。所有业务单元都包含相同的行(所有业务单元的30行名称都相同),这是我编写的一个小代码。在代码表中,它只包含每行的代码。但如果是执行后的历史记录表,它会向我显示所有业务单元的结果(将业务单元视为部门)。如果问题不清楚,请告诉我。您需要提供一些示例数据来解释问题-输入和所需输出