我有两个表(一个表是从xml创建的)。 我必须根据第一个表中的值和键更新第二个表中的列。
表具有相同的列。第一张表:
DECLARE @tblORAS_NET TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
第二张表几乎相同:
DECLARE @tblORAS_NET1 TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
我的问题是 - 如何根据第一个表格中的ORAS_NET
和第一个表格中的ORAS_NET
更新第二个表格中的ORAS_KEY
?我的主要问题是,我不知道如何写ORAS_KEY
上的条件,同时获得ORAS_NET
?
declare @xml_ORAS_NET xml = '<DataTable>
<TR><ORAS_KEY>1</ORAS_KEY><ORAS_NET>284.03</ORAS_NET></TR>
<TR><ORAS_KEY>2</ORAS_KEY><ORAS_NET>543.12</ORAS_NET></TR>
<TR><ORAS_KEY>3</ORAS_KEY><ORAS_NET>981.91</ORAS_NET></TR>
</DataTable>';
DECLARE @tblORAS_NET TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
IF (@xml_ORAS_NET IS NOT NULL)
BEGIN
INSERT INTO @tblORAS_NET (ORAS_KEY, ORAS_NET)
SELECT
DataTable.TR.value('ORAS_KEY[1]','INT') AS ORAS_KEY,
DataTable.TR.value('ORAS_NET[1]','DECIMAL(15,4)') AS ORAS_NET
FROM @xml_ORAS_NET.nodes('/DataTable/TR') DataTable(TR)
END
select * from @tblORAS_NET
DECLARE @tblORAS_NET1 TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
insert into @tblORAS_NET1(oras_key) values(1),(2),(3)
select * from @tblORAS_NET1
答案 0 :(得分:2)
我相信这是你想要的更新声明 - 虽然你没有说明你的预期结果,所以我在黑暗中采取了一些刺激......
update net1
set net1.ORAS_NET = net.ORAS_NET
from @tblORAS_NET net
join @tblORAS_NET1 net1
on net.ORAS_KEY = net1.ORAS_KEY