MERGE - Esempio di utilizzo: differenze tra le versioni

Da Webmobili Wiki.
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
Da usarsi quando è necessario un inserimento del tipo:<br/>
Da usarsi quando è necessario un inserimento del tipo:<br/>
<code>
<syntaxhighlight>
IF EXISTS UPDATE<br/>
IF EXISTS UPDATE
ELSE INSERT
ELSE INSERT
</code>
</syntaxhighlight>
 
Ecco un esempio di utilizzo


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">

Versione attuale delle 14:33, 17 gen 2017

Da usarsi quando è necessario un inserimento del tipo:

IF EXISTS UPDATE
ELSE INSERT

Ecco un esempio di utilizzo

SELECT AmbientID, Data, SUM(Visitors) AS SumVisitors , SUM(ViewedPages) AS SumViewedPages
INTO #temp
FROM AmbientsAccess
WHERE ZoneID in (1,2,3)
GROUP BY AmbientID, Data


MERGE INTO AmbientsAccess AS itarget
USING #temp AS isource
 ON( (itarget.ZoneID = 1 AND isource.AmbientID = itarget.AmbientID AND isource.Data = itarget.Data) )
WHEN MATCHED THEN
 UPDATE /*AmbientAccess*/ SET itarget.Visitors = isource.SumVisitors, itarget.ViewedPages = isource.SumViewedPages
WHEN NOT MATCHED THEN	-- non è più possibile usare itarget
 INSERT /*INTO AmbientAccess*/ (AmbientID, ZoneID, Data, Visitors, ViewedPages) VALUES(isource.AmbientID,1, isource.Data, isource.SumVisitors, isource.SumViewedPages);

DROP TABLE #temp