J'ai une table table1
qui a quelques colonnes, qui doit être calculée et déplacée dans une autre table table2
selon certaines conditions. Pour répondre aux conditions, j'ai créé une table temporaire #ttemp
et modifié la table temporaire en créant deux nouvelles variables var1
et var2
pour définir des valeurs basées sur différentes colonnes et vérifier plus tard ces conditions. Si les conditions passent, je fais un peu d'agrégation et ensuite j'insérerais dans table2
qui aura des colonnes agrégées.Insérer des enregistrements dans une table avec une instruction IF d'un temp dans SQL Server 2016
D'abord, créez le tableau #temp
et les variables de table1
.
SELECT *
INTO #ttemp
FROM table1
alter table #ttemp add var1 int
alter table #ttemp add var2 int
update #ttemp set var1 = -1
update #ttemp set var1 = 1
where error <> 0 and var1 = -1
update #ttemp var2 = -1
Ensuite, les valeurs de var1
colonne et var2
valeurs colonnes de la table #temp
(var1 = 0
et var2 = -1
) et calculer la moyenne des cus_request
, cus_stay
et les mettre dans une nouvelle table temporaire #ttemp2
.
IF var2 = -1 and var1 = 0
BEGIN
select y.id, y.avg(cus_request) as r_avg, y.avg(cust_stay) as s_avg
INTO #ttemp2
FROM #ttemp as y
UPDATE l
SET l.cus_request_avg = t.r_avg, l.cust_stay_avg = t.s_avg
FROM table2 as l
inner join #ttemp2 as t
t.id = l.id
END
Mon problème est, mon instruction IF ne fonctionne pas et si je viens de lancer les déclarations select
et update
déclaration, il fonctionne très bien, mais après la déclaration de mise à jour, j'obtenir 0 rows affected
que les conditions ne se rencontrent pas. J'utilise update
au lieu de insert
déclaration. Comment insérer des enregistrements dans table2
?
Toute aide aurait apprécié.
Où est votre BEGIN? –
Pouvez-vous poster la requête complète? Je ne comprends pas vraiment comment votre FI s'intègre. Avec un IF, vous voulez comparer une valeur, pas une colonne. Ce que vous avez fait là pourrait être réalisé par une clause WHERE j'imagine. – Leonidas199x
@ Leonidas199x Je compare les valeurs de ces colonnes 'var1' et' var2'. Je suis un novice dans SQL Server. Voulez-vous dire que je peux définir la comparaison de valeur 'var1' et' var2' dans la clause 'where'? –