J'ai deux tables (une table est créée à partir de xml). Je dois mettre à jour les colonnes de la deuxième table, en fonction des valeurs et des clés de la première table.Mise à jour de la deuxième table basée sur les valeurs/clés de la première table
Les tables ont les mêmes colonnes. Première table:
DECLARE @tblORAS_NET TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
Deuxième tableau est presque le même:
DECLARE @tblORAS_NET1 TABLE
(
ORAS_KEY INT,
ORAS_NET DECIMAL(15,4)
)
Ma question est - comment mettre à jour ORAS_NET
dans la deuxième table basée sur ORAS_NET
de la première table et ORAS_KEY
de la première table? Mon principal problème est que je ne sais pas comment écrire où la condition sur le ORAS_KEY
et en même temps obtenir 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
http: //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx Cela semble être la bonne direction. –
C'est un flic, Sean. Mise à jour de ma réponse pour utiliser une 'jointure' – Brett