<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'SQL Server', 'T-SQL', and 'Composable DML'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=SQL+Server,T-SQL,Composable+DML&amp;orTags=0</link><description>Search results matching tags 'SQL Server', 'T-SQL', and 'Composable DML'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Obtaining rowcounts when using Composable DML [T-SQL]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/07/obtaining-rowcounts-when-using-composable-dml.aspx</link><pubDate>Thu, 07 Feb 2013 13:59:57 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47531</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;In my August 2009 blog post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/08/31/exploring-composable-dml.aspx" target="_blank"&gt;Exploring Composable DML&lt;/a&gt; I introduced a new feature in SQL Server 2008 called Composable DML and also outlined one of its limitations; namely that data from the OUTPUT cannot be aggregated prior to insertion. Composable DML does have some useful scenarios however and one of those is in capturing and storing values that are replaced by an UPDATE (which I have talked about before in &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2012/07/13/using-composable-dml-to-maintain-entity-history-t-sql.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2012/07/13/using-composable-dml-to-maintain-entity-history-t-sql.aspx" target="_blank"&gt;Using Composable DML to maintain entity history&lt;/a&gt;). Here’s the basic premise:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="text-align:left;list-style-type:disc;font-family:;background:white;color:;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;INSERT&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt; old_values&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt; id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; name &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--use Composable DML to store the values that were replaced by an UPDATE&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_id
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_name
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	tgt
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	src
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; action_
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;mrgout
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;action_ &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--Filtering on $action=UPDATE allows us to get the replaced values from DELETED virtual table&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;span style="color:;"&gt;&lt;font style="font-size:9.8pt;" color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;This statement updates some rows in [tgt] and stores the old values in [old_values]. I think that’s rather useful, especially in a data warehousing scenario where one may wish to MERGE to a type 1 dimension table. Unfortunately this scenario gives rise to another limitation of Composable DML – the value returned by &lt;font color="#ff00ff"&gt;@@ROWCOUNT&lt;/font&gt; is the number of rows that were affected in [old_values], not in [tgt]. The following code (which you can simply copy/paste and execute and which is also &lt;a href="http://pastebin.com/5wBsTVx9" target="_blank"&gt;available on pastebin&lt;/a&gt;) demonstrates this problem:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="text-align:left;list-style-type:disc;font-family:;background:white;color:;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;&lt;font style="font-size:9.8pt;"&gt;/******************************************************************************************************************************&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;A demonstration of capturing rowcounts when using composable DML. The problem I'm trying to demonstrate here is that &lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;I don't think there is a way to capture the number of rows affected by the MERGE&lt;/font&gt;&lt;/span&gt;
 
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;Jamie Thomson, 2013-02-07&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;******************************************************************************************************************************/&lt;/font&gt;&lt;/span&gt;
 
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;/*Setup table first and insert some data into [src]*/&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;USE&lt;/font&gt;&lt;/span&gt; tempdb
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;IF&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;OBJECT_ID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'src'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;IS&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/span&gt;		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;DROP&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	id		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	name&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;IF&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;OBJECT_ID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'tgt'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;IS&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/span&gt;		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;DROP&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; tgt&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	id		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	name&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;/*[updates] will be used as the target of the Composable DML insertion*/&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;IF&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;OBJECT_ID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'old_values'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;IS&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/span&gt;		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;DROP&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; old_values&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; old_values&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	id		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	name&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'don'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;),(&lt;/font&gt;&lt;/span&gt;2&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'kaina'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;GO&lt;/font&gt;&lt;/span&gt;
 
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;/*Everything after here gets run twice because the batch ends with GO 2*/&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt; old_values&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt; id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; name &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--use Composable DML to store the values that were replaced by an UPDATE&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_id
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_name
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	tgt
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	src
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; action_
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;mrgout
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;action_ &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--Filtering on $action=UPDATE allows us to get the replaced values from DELETED virtual table&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	[@@ROWCOUNT]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;@@ROWCOUNT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;row_tally_in_tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt; tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#008000"&gt;-- &amp;lt;-Rowcount only provides tally of rows affected by the outer INSERT, not the MERGE&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;GO&lt;/font&gt;&lt;/span&gt; 2
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is the output:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7001D9F8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1A01D821.png" width="244" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice that the Composable DML containing the MERGE statement is executed twice. The first execution inserts two rows into [tgt] yet &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;@@ROWCOUNT&lt;/font&gt;&lt;/span&gt; returns zero because zero rows were inserted into [old_values] by the outer query. The second execution results in two rows in [tgt] being updated hence two rows are inserted into [old_values] and hence why &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;@@ROWCOUNT&lt;/font&gt;&lt;/span&gt; returns two. It appears there is no way to discover the number of inserts or updates that were committed by the MERGE; if you’re a fan of logging rowcounts during ETL operations (which I think you should be) then this is a big problem. The only way I can think of getting around this problem is to break the statement into two like so (for brevity I haven’t included the full code listing so it is also available &lt;a href="http://pastebin.com/HHSSNV2H" target="_blank"&gt;on pastebin&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="text-align:left;list-style-type:disc;font-family:;background:white;color:;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;&lt;font style="font-size:9.8pt;"&gt;/*Setup part is the same as before, we do need an extra table for capturing the output of our MERGE tho*/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;IF&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;OBJECT_ID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'mrgout'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;IS&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/span&gt;		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;DROP&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; mrgout&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	action_			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	inserted_id		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	inserted_name&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	deleted_id		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	deleted_name&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'don'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;),(&lt;/font&gt;&lt;/span&gt;2&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'kaina'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;GO&lt;/font&gt;&lt;/span&gt;
 
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;/*Everything after here gets run twice because the batch ends with GO 2*/&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TRUNCATE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt; mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;action_&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; inserted_id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; inserted_name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;deleted_id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; deleted_name &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;action_
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;inserted_id
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;inserted_name
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_id
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;deleted_name
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	tgt
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	src
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;	tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt; src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; action_
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;NAME &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; inserted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;id &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_id
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;name &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; deleted_name
		&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;mrgout
&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	dbo&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;old_values&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	deleted_id&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;deleted_name &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt; mrgout
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	mrgout&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;action_ &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--Filtering on $action=UPDATE allows us to get the replaced values from DELETED virtual table&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	[INSERT_@@ROWCOUNT]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt; mrgout &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt; action_ &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'INSERT'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/span&gt;[UPDATE_@@ROWCOUNT]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt; mrgout &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt; action_ &lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/span&gt;row_tally_in_tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=(&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt; tgt&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;#160;&amp;#160; &lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;GO&lt;/font&gt;&lt;/span&gt; 2
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Executing that returns:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1FDC7BBA.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_13DA8B86.png" width="459" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is much better. We now know the tally of insertions and updates committed by the MERGE, unfortunately we have had to do it in two separate statements which in a way defeats the point of using MERGE in the first place (and don’t forget some of the other &lt;a href="http://www.sqlperformance.com/2013/02/t-sql-queries/another-merge-bug" target="_blank"&gt;current problems with MERGE&lt;/a&gt;). If you can think of a better way of doing it then I’m all ears – please reply in the &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2013/02/07/obtaining-rowcounts-when-using-composable-dml.aspx#comments" target="_blank"&gt;comments&lt;/a&gt; below.&lt;/p&gt;

&lt;p&gt;I’m not saying don’t use MERGE and I’m not saying don’t use Composable DML; just be aware of their limitations. Personally I think there should be built-in functions, similar to &lt;span style="color:;"&gt;&lt;font color="#ff00ff"&gt;@@ROWCOUNT&lt;/font&gt;&lt;/span&gt;, that return the number of rows INSERTed/DELETEd/UPDATEd by a MERGE; &lt;a href="http://sqlblog.com/blogs/aaron_bertrand/" target="_blank"&gt;Aaron Bertrand&lt;/a&gt; agreed and raised a Connect submission to that affect: &lt;a title="https://connect.microsoft.com/SQLServer/feedback/details/298395/katmai-merge-does-not-distinguish-rowcounts-in-triggers" href="https://connect.microsoft.com/SQLServer/feedback/details/298395/katmai-merge-does-not-distinguish-rowcounts-in-triggers" target="_blank"&gt;Katmai : Merge does not distinguish rowcounts in triggers&lt;/a&gt; which has, unfortunately, “been closed as won’t fix”.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Using Composable DML to maintain entity history [T-SQL]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/07/13/using-composable-dml-to-maintain-entity-history-t-sql.aspx</link><pubDate>Fri, 13 Jul 2012 13:09:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44287</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;I recently inherited a data warehousing SQL Server solution from my good buddy James Rowland-Jones (you may know him from &lt;a href="http://www.sqlpass.org/AboutPASS/JamesRowlandJones.aspx" target="_blank"&gt;his more auspicious role on the SQLPass board&lt;/a&gt;) and it contained a very cool technique of using composable DML (a feature that arrived in SQL Server 2008) to maintain history of updates to a particular table. I knew about composable DML (and have &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Composable+DML/default.aspx" target="_blank"&gt;blogged about it previously&lt;/a&gt;) however had never considered how useful it could be in a data warehousing scenario, hopefully James won’t mind if I share what I’ve learned in this blog post.&lt;/p&gt;
  
&lt;p&gt;In our case we have a Customer dimension that needs to be maintained as a &lt;a href="http://en.wikipedia.org/wiki/Slowly_changing_dimension" target="_blank"&gt;type 2&lt;/a&gt; however for speed of querying purposes we also need to have a table that provides the most recent state view of all our customers. For demo purposes, here are our two tables:&lt;/p&gt;
  
&lt;blockquote&gt;   
&lt;pre style="background:white;text-align:left;font-family:;list-style-type:disc;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;CREATE&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; [#Customer]&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerSurrogateKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#0000ff"&gt;IDENTITY&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;PRIMARY&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;KEY&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[EffectiveDateTime]	&lt;span&gt;&lt;font color="#0000ff"&gt;DATETIME2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;7&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;CONSTRAINT&lt;/font&gt;&lt;/span&gt; [Customer_UK] &lt;span&gt;&lt;font color="#0000ff"&gt;UNIQUE &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; [#CustomerCurrent]&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerCurrentSurrogateKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#0000ff"&gt;IDENTITY&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;PRIMARY&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;KEY&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[CustomerNaturalKey]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;			&lt;span&gt;&lt;font color="#0000ff"&gt;UNIQUE&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]		&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]			&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;[#Customer] is our type 2 dimension table and [#CustomerCurrent] will store the most recent state of each customer.&lt;/p&gt;

&lt;p&gt;Composable DML allows us to take data from the OUTPUT clause of an INSERT or MERGE statement and insert that data elsewhere; in our case we are going to first MERGE into [#CustomerCurrent] and then insert the new or updated records into [#Customer]. Like so:&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;pre style="background:white;text-align:left;font-family:;list-style-type:disc;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;DECLARE&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;	@newData &lt;span&gt;&lt;font color="#0000ff"&gt;TABLE &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;/*Manufacture some incoming new data*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	@newData&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Jamie'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'London'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Sarah'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Birmingham'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Ginny'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Glasgow'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;/*MERGE into #CustomerCurrent and insert new/updated records into #Customer using Composable DML*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	#Customer&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;SYSDATETIME&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;()&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	#CustomerCurrent tgt
		&lt;span&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	@newData src
			&lt;span&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;AND&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;				&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
				&lt;span&gt;&lt;font color="#808080"&gt;OR&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
				&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
				&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;		[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
			&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		[HomeTown]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
		&lt;span&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;					&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [Action]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;[mergeOutput]
&lt;span&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[Action] &lt;span&gt;&lt;font color="#808080"&gt;IN&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'INSERT'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.8pt;" color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Take a minute or two to look at that code and work out what is going on:&lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;We take the new data in @newData and compare it to the target, [#CustomerCurrent], to see if there are any new or updated records. If there are, do the necessary INSERT or UPDATE within the MERGE.&lt;/li&gt;

  
&lt;li&gt;Output the newly inserted/updated data using the OUTPUT clause&lt;/li&gt;

  
&lt;li&gt;Insert the new/updated records into our type 2 dimension table, [#Customer].&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After we run this we end up with this data in the two tables:&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0B8A6710.png"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3C3D6EBB.png" width="562" height="234"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Obviously there is no difference at this stage. The real benefit comes when we update and insert new records; let’s model that scenario by changing what’s in @newData and running the same code:&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;pre style="background:white;text-align:left;font-family:;list-style-type:disc;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;INSERT&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;	@newData&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Ginny'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Edinburgh'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#008000"&gt;--Ginny has moved from Glasgow to Edinburgh&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Mike'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;2&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Leeds'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#008000"&gt;--Mike is a new customer&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.8pt;" color="#808080"&gt;;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#008000"&gt;&lt;font style="font-size:9.8pt;"&gt;--Run the MERGE with Composable DML again....&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which leaves us with:&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1ADDC91F.png"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6082533D.png" width="864" height="272"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Note how we have two records for Ginny in [#Customer] however only one record, showing the current state ([HomeTown]=’Edinburgh’), in [#CustomerCurrent]. The real beauty of this technique is that both operations (i.e. the MERGE into [#CustomerCurrent] and the INSERT into [#Customer]) are done under the same transaction so if either fail, both fail.&lt;/p&gt;

&lt;p&gt;Pretty cool, no? Once all the data is inserted then we can take a look at the history of each of our customers&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;pre style="background:white;text-align:left;font-family:;list-style-type:disc;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#008000"&gt;&lt;font style="font-size:9.8pt;"&gt;/*This code only works on SQL Server 2012 and beyond due to the use of the LEAD function, however you can achieve similar &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;
&lt;span&gt;&lt;font color="#008000"&gt;in earlier versions using a technique outlined at &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/28/debunking-kimball-effective-dates.aspx"&gt;http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/28/debunking-kimball-effective-dates.aspx&lt;/a&gt;&lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/28/debunking-kimball-effective-dates.aspx"&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/28/debunking-kimball-effective-dates.aspx"&gt;
&lt;/a&gt;*/&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;br&gt;SELECT&lt;/font&gt;&lt;/span&gt;	c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerSurrogateKey]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[StartEffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt; LEAD&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;OVER&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;PARTITION&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;BY&lt;/font&gt;&lt;/span&gt; c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey] &lt;span&gt;&lt;font color="#0000ff"&gt;ORDER&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;BY&lt;/font&gt;&lt;/span&gt; c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime] &lt;span&gt;&lt;font color="#0000ff"&gt;ASC&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff00ff"&gt;CAST&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'20501231'&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;DATETIME&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [EndEffectiveDateTime]
&lt;span&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [#Customer] c &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1F07A0E4.png"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0B7A4143.png" width="1001" height="158"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s it! Hope this proves useful to some of you. If you want to read more about Composable DML then take a read of &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2009/08/31/exploring-composable-dml.aspx" target="_blank"&gt;Exploring Composable DML&lt;/a&gt;. Thank you to James for showing me a great use of this little-known feature in SQL Server.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;
  
&lt;hr&gt;Rather than running each of the above snippets individually here is the entire demo script. Simply copy-and-paste everything below into a SSMS query window and hit execute:

&lt;blockquote&gt;
  
&lt;pre style="background:white;text-align:left;font-family:;list-style-type:disc;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;CREATE&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; [#Customer]&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerSurrogateKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#0000ff"&gt;IDENTITY&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;PRIMARY&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;KEY&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff00ff"&gt;MAX&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[EffectiveDateTime]	&lt;span&gt;&lt;font color="#0000ff"&gt;DATETIME2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;7&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;CONSTRAINT&lt;/font&gt;&lt;/span&gt; [Customer_UK] &lt;span&gt;&lt;font color="#0000ff"&gt;UNIQUE &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/span&gt; [#CustomerCurrent]&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerCurrentSurrogateKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;INT&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#0000ff"&gt;IDENTITY&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#0000ff"&gt;PRIMARY&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;KEY&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[CustomerNaturalKey]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;			&lt;span&gt;&lt;font color="#0000ff"&gt;UNIQUE&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]		&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]			&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;DECLARE&lt;/font&gt;&lt;/span&gt;	@newData &lt;span&gt;&lt;font color="#0000ff"&gt;TABLE &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
	[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;TINYINT&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;NVARCHAR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;100&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;/*Manufacture some incoming new data*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	@newData&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Jamie'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;1&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'London'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Sarah'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Birmingham'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Ginny'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Glasgow'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;		
&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;/*MERGE into #CustomerCurrent and insert new/updated records into #Customer using Composable DML*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	#Customer&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;SYSDATETIME&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;()&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	#CustomerCurrent tgt
		&lt;span&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	@newData src
			&lt;span&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;AND&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;				&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
				&lt;span&gt;&lt;font color="#808080"&gt;OR&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
				&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
				&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;		[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
			&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		[HomeTown]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
		&lt;span&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;					&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [Action]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;[mergeOutput]
&lt;span&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[Action] &lt;span&gt;&lt;font color="#808080"&gt;IN&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'INSERT'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;WAITFOR&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;DELAY&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;'00:00:01'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;/*Manufacture some incoming new data*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	@newData&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Ginny'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;0&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Edinburgh'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#008000"&gt;--Ginny has moved from Glasgow to Edinburgh&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Mike'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;2&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;N'Leeds'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;		&lt;span&gt;&lt;font color="#008000"&gt;--Mike is a new customer&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
 
&lt;span&gt;&lt;font color="#008000"&gt;/*Execute the same MERGE */&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;	#Customer&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedCustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedNumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[InsertedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[DeletedHomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;SYSDATETIME&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;()&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;FROM	&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;MERGE&lt;/font&gt;&lt;/span&gt;	#CustomerCurrent tgt
		&lt;span&gt;&lt;font color="#0000ff"&gt;USING&lt;/font&gt;&lt;/span&gt;	@newData src
			&lt;span&gt;&lt;font color="#0000ff"&gt;ON&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#0000ff"&gt;VALUES&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
		&lt;span&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;MATCHED&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#808080"&gt;AND&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;				&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
				&lt;span&gt;&lt;font color="#808080"&gt;OR&lt;/font&gt;&lt;/span&gt;	tgt&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
				&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
				&lt;span&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/span&gt;
			&lt;span&gt;&lt;font color="#ff00ff"&gt;UPDATE&lt;/font&gt;&lt;/span&gt;	
			&lt;span&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt;&lt;/span&gt;		[NumberOfChildren]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
			&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		[HomeTown]	&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;	src&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
		&lt;span&gt;&lt;font color="#0000ff"&gt;OUTPUT&lt;/font&gt;&lt;/span&gt;	&lt;span&gt;&lt;font color="#ff00ff"&gt;$ACTION&lt;/font&gt;&lt;/span&gt;					&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [Action]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		DELETED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [DeletedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedCustomerNaturalKey]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]	&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedNumberOfChildren]
		&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		INSERTED&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]		&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [InsertedHomeTown]
		&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;[mergeOutput]
&lt;span&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/span&gt;	[mergeOutput]&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[Action] &lt;span&gt;&lt;font color="#808080"&gt;IN&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'UPDATE'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'INSERT'&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/span&gt;
 
&lt;span&gt;&lt;font color="#008000"&gt;/*This code only works on SQL Server 2012 and beyond due to the use of the LEAD function, however you can achieve similar &lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;using in earlier versions using a technique outlined at http://sqlblog.com/blogs/jamie_thomson/archive/2009/11/28/debunking-kimball-effective-dates.aspx*/&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/span&gt;	c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerSurrogateKey]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[NumberOfChildren]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[HomeTown]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;		[StartEffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]
&lt;span&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt; LEAD&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime]&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;OVER&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;PARTITION&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;BY&lt;/font&gt;&lt;/span&gt; c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[CustomerNaturalKey] &lt;span&gt;&lt;font color="#0000ff"&gt;ORDER&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;BY&lt;/font&gt;&lt;/span&gt; c&lt;span&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[EffectiveDateTime] &lt;span&gt;&lt;font color="#0000ff"&gt;ASC&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff00ff"&gt;CAST&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;'20501231'&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;DATETIME&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/span&gt; [EndEffectiveDateTime]
&lt;span&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [#Customer] c &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;</description></item></channel></rss>