<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Thinking outside the box</title>
        <link>http://weblogs.sqlteam.com/peterl/Default.aspx</link>
        <description>Patron Saint of Lost Yaks</description>
        <language>sv-SE</language>
        <copyright>Peter Larsson</copyright>
        <generator>Subtext Version 2.5.1.0</generator>
        <image>
            <title>Thinking outside the box</title>
            <url>http://weblogs.sqlteam.com/images/RSS2Image.gif</url>
            <link>http://weblogs.sqlteam.com/peterl/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Fast easter day function</title>
            <category>Optimization</category>
            <category>SQL Server 2008</category>
            <category>Algorithms</category>
            <category>SQL Server 2005</category>
            <category>SQL Server 2000</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/09/08/fast-easter-day-function.aspx</link>
            <description>&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: blue; FONT-SIZE: 9pt"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt; &lt;span style="COLOR: blue"&gt;FUNCTION&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;fnGetEasterDate&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: gray; FONT-SIZE: 9pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;    @Year &lt;span style="COLOR: blue"&gt;SMALLINT&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: gray; FONT-SIZE: 9pt"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: blue; FONT-SIZE: 9pt"&gt;RETURNS&lt;/span&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt; &lt;span style="COLOR: blue"&gt;DATE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: blue; FONT-SIZE: 9pt"&gt;AS&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: blue; FONT-SIZE: 9pt"&gt;BEGIN&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;    &lt;span style="COLOR: blue"&gt;RETURN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;DATEADD&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;DAY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;DATEDIFF&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;DAY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 0&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CONVERT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DATETIME&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Year &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;4&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; BaseDate&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 112&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 7 &lt;span style="COLOR: gray"&gt;*&lt;/span&gt; 7&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 6&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                            &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; @Year &lt;span style="COLOR: gray"&gt;%&lt;/span&gt; 19&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  0 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0415'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  1 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0404'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  2 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0324'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  3 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0412'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  4 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0401'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  5 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0419'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  6 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0409'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  7 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0329'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  8 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0417'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt;  9 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0406'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 10 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0326'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 11 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0414'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 12 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0403'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 13 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0323'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 14 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0411'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 15 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0331'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 16 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0418'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 17 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0408'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; 18 &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; &lt;span style="COLOR: red"&gt;'0328'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                        &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                                    &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                            &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   @Year &lt;span style="COLOR: gray"&gt;BETWEEN&lt;/span&gt; 1900 &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; 9999&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;                        &lt;/span&gt;&lt;span style="FONT-FAMILY: Anonymous; COLOR: gray; FONT-SIZE: 9pt"&gt;)&lt;/span&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; d&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;BaseDate&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: Anonymous; FONT-SIZE: 9pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Anonymous; COLOR: blue; FONT-SIZE: 9pt"&gt;END&lt;/span&gt;&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61195.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/09/08/fast-easter-day-function.aspx</guid>
            <pubDate>Wed, 08 Sep 2010 13:30:22 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/09/08/fast-easter-day-function.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61195.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61195.aspx</trackback:ping>
        </item>
        <item>
            <title>Married with children</title>
            <category>Miscellaneous</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/08/24/married-with-children.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;will happen in just 4 days. The child part is taken care of. Multiple times.&lt;br /&gt;
Now it's time for the married part.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Me and my girlfriend Jennie will be married in Bjuv church at 3pm, Saturday the 28th of August 2010.&lt;br /&gt;
Pictures of Bjuv church can be found &lt;a href="http://www.google.co.uk/images?q=bjuvs+kyrka&amp;amp;um=1&amp;amp;hl=en&amp;amp;safe=off&amp;amp;tbs=isch:1&amp;amp;ei=LJlzTLL0CMqMOILxyasI&amp;amp;sa=N&amp;amp;start=0&amp;amp;ndsp=18"&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;After the ceromony we'll goto &lt;a href="http://www.hovshallar.se/eng/index.html"&gt;Hovs Hallar&lt;/a&gt; for dinner and party.&lt;br /&gt;
The famous parts (The chess scenes) of the movie &lt;a href="http://www.imdb.com/title/tt0050976/"&gt;The Seventh Seal&lt;/a&gt; by Ingmar Bergman was shot here. We'll sleep there since most of Jennie's family comes from Stockholm (300 miles away).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;So I'll soon wear a ring on my finger. I tried the "rule them all" trick, but it didn't work. At all, even if my ring is a copy of &lt;em&gt;the&lt;/em&gt; ring. Ask Jennie.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61188.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/08/24/married-with-children.aspx</guid>
            <pubDate>Tue, 24 Aug 2010 10:37:44 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/08/24/married-with-children.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61188.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61188.aspx</trackback:ping>
        </item>
        <item>
            <title>Excel XIRR function</title>
            <category>SQL Server 2008</category>
            <category>Algorithms</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/excel-xirr-function.aspx</link>
            <description>First create a table type like this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="BACKGROUND-COLOR: white; COLOR: black"&gt;
&lt;pre&gt;&lt;span style="COLOR: blue"&gt;CREATE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;TYPE&lt;/span&gt;	dbo.MyXirrTable &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;
		(
			theValue &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9) &lt;span style="COLOR: blue"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NULL&lt;/span&gt;, 
			theDate &lt;span style="COLOR: blue"&gt;DATETIME&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NULL&lt;/span&gt;
		)
GO

&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And then you create a function like this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="BACKGROUND-COLOR: white; COLOR: black"&gt;
&lt;pre&gt;&lt;span style="COLOR: blue"&gt;CREATE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FUNCTION&lt;/span&gt; dbo.XIRR
(
	@Sample MyXirrTable READONLY,
	@Rate &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9) = 0.1
)
&lt;span style="COLOR: blue"&gt;RETURNS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(38, 9)
&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;
&lt;span style="COLOR: blue"&gt;BEGIN&lt;/span&gt;
	&lt;span style="COLOR: blue"&gt;DECLARE&lt;/span&gt;	@LastRate &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9),
		@RateStep &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9) = 0.1,
		@Residual &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9) = 10,
		@LastResidual &lt;span style="COLOR: blue"&gt;DECIMAL&lt;/span&gt;(19, 9) = 1,
		@i &lt;span style="COLOR: blue"&gt;TINYINT&lt;/span&gt; = 0

	&lt;span style="COLOR: blue"&gt;IF&lt;/span&gt; @Rate &lt;span style="COLOR: blue"&gt;IS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NULL&lt;/span&gt;
		&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt;	@Rate = 0.1

	&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt; @LastRate = @Rate

	&lt;span style="COLOR: blue"&gt;WHILE&lt;/span&gt; @i &amp;lt; 100 &lt;span style="COLOR: blue"&gt;AND&lt;/span&gt; &lt;span style="COLOR: magenta"&gt;ABS&lt;/span&gt;((@LastResidual - @Residual) / @LastResidual) &amp;gt; 0.00000001
		&lt;span style="COLOR: blue"&gt;BEGIN&lt;/span&gt;
			&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;	@LastResidual = @Residual,
				@Residual = 0

			&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;	@Residual = @Residual + theValue / &lt;span style="COLOR: magenta"&gt;POWER&lt;/span&gt;(1 + @Rate, theDelta / 365.0E)
			&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;	(
					&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;	theValue,
						&lt;span style="COLOR: blue"&gt;DATEDIFF&lt;/span&gt;(&lt;span style="COLOR: magenta"&gt;DAY&lt;/span&gt;, &lt;span style="COLOR: magenta"&gt;MIN&lt;/span&gt;(theDate) &lt;span style="COLOR: blue"&gt;OVER&lt;/span&gt; (), theDate) &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; theDelta
					&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;	@Sample
			 	) &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; d

			&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt;	@LastRate = @Rate

			&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; @Residual &amp;gt;= 0
				&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt; @Rate += @RateStep
			&lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt;
				&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;	@RateStep /= 2,
					@Rate -= @RateStep

			&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt;	@i += 1
		&lt;span style="COLOR: blue"&gt;END&lt;/span&gt;

	&lt;span style="COLOR: blue"&gt;RETURN&lt;/span&gt;	@LastRate
&lt;span style="COLOR: blue"&gt;END&lt;/span&gt;
GO

&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then all you have to do is to test it! Like this...&lt;br /&gt;
&lt;br /&gt;
&lt;div style="BACKGROUND-COLOR: white; COLOR: black"&gt;
&lt;pre&gt;&lt;span style="COLOR: blue"&gt;DECLARE&lt;/span&gt;	@Test MyXirrTable

&lt;span style="COLOR: blue"&gt;INSERT&lt;/span&gt;	@Test
&lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;	(-10, &lt;span style="COLOR: #a31515"&gt;'20080101'&lt;/span&gt;),
	(2.75, &lt;span style="COLOR: #a31515"&gt;'20080301'&lt;/span&gt;),
	(4.25, &lt;span style="COLOR: #a31515"&gt;'20081030'&lt;/span&gt;),
	(3.25, &lt;span style="COLOR: #a31515"&gt;'20090215'&lt;/span&gt;),
	(2.75, &lt;span style="COLOR: #a31515"&gt;'20090401'&lt;/span&gt;)

&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;	dbo.XIRR(@Test, 0.1)	&lt;span style="COLOR: green"&gt;--0.373362535&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61184.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/excel-xirr-function.aspx</guid>
            <pubDate>Thu, 19 Aug 2010 19:46:33 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/excel-xirr-function.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61184.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61184.aspx</trackback:ping>
        </item>
        <item>
            <title>CHECKSUM weakness explained</title>
            <category>Algorithms</category>
            <category>Miscellaneous</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/checksum-weakness-explained.aspx</link>
            <description>&lt;p&gt;The built-in CHECKUM function in SQL Server is built on a series of 4 bit left rotational xor operations. See here in a previous forum post &lt;font face="Arial"&gt;&lt;a href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=70832"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=70832&lt;/a&gt; for more explanation.&lt;br /&gt;
&lt;br /&gt;
Today, I wanted to see how often a collision (or false positive) can occur.&lt;br /&gt;
&lt;br /&gt;
Let's take a very simple CHECKSUM value, for example 123. Decimal 123 is "01111011" in binary representation.&lt;br /&gt;
Since CHECKSUM function rotates the iterative checksum value 4 bits to the left (same thing as multiplying by 16), how many permutations of two characters returns the same CHECKSUM value of 123? The answer is 16 permutations.&lt;br /&gt;
&lt;br /&gt;
Let's investigate by writing down the solution of this two character replacement.&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;     abcd 1011      Second character&lt;br /&gt;
0000 aBCD           First character&lt;br /&gt;
--------------&lt;br /&gt;
0000 0111 1011&lt;/font&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Courier New"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
Before we do anything more, let's refresh our mind on how XOR works. 0 and 0 returns 0, 0 and 1 returns 1, 1 and 0 return 1 and finally 1 and 1 return 0.&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;_ _|_0_|_1_|&lt;br /&gt;
_0_|_0_|_1_|&lt;br /&gt;
_1_|_1_|_0_|&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
Why did I then write the mysterious abcd and aBCD in the formula above? &lt;br /&gt;
&lt;br /&gt;
Because the resulting bit sequence should be 0111, and only the same bits xor'ed gives 0. And the reason to use lower and upper characters for remaining bits are also due to xor. A result of 1 means the two bits has to be the opposite of each other; 0 xor 1 gives 1 and 1 xor 0 also gives 1 as result.&lt;br /&gt;
&lt;br /&gt;
So "a" can have 2 possible values, and so can "b", "c", and "d" have. It gives 16 permutations in total. &lt;br /&gt;
See here&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;Bitseq1 Bitseq2 xor&lt;br /&gt;
0000    0111    0111&lt;br /&gt;
0001    0110    0111&lt;br /&gt;
0010    0101    0111&lt;br /&gt;
0011    0100    0111&lt;br /&gt;
0100    0011    0111&lt;br /&gt;
0101    0010    0111&lt;br /&gt;
0110    0001    0111&lt;br /&gt;
0111    0000    0111&lt;br /&gt;
1000    1111    0111&lt;br /&gt;
1001    1110    0111&lt;br /&gt;
1010    1101    0111&lt;br /&gt;
1011    1100    0111&lt;br /&gt;
1100    1011    0111&lt;br /&gt;
1101    1010    0111&lt;br /&gt;
1110    1001    0111&lt;br /&gt;
1111    1000    0111&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
This table above can be applied for any number of character for the first or last character.&lt;br /&gt;
&lt;br /&gt;
Can this be applied onto a 3 character replacement? Of course, and in the same way. Still using the original decimal value of 123, the used characters are these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;          abcd 1011      Third character&lt;br /&gt;
&lt;/font&gt;     xxxx aBCD           Second character&lt;br /&gt;
0000 xxxx                First character&lt;br /&gt;
-------------------&lt;br /&gt;
0000 0000 0111 1011&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Courier New"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
As you now can see, there are 16 times 16 possible (256) permutations giving the same CHECKSUM value!&lt;br /&gt;
&lt;br /&gt;
And for four characters, the map looks like this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;               abcd 1011      Fourth character&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;          yyyy aBCD           Third character&lt;br /&gt;
&lt;/font&gt;     xxxx yyyy                Second character&lt;br /&gt;
0000 xxxx                     First character&lt;br /&gt;
------------------------&lt;br /&gt;
0000 0000 0000 0111 1011&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Courier New"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
As you now can see, there are 16 times 16 times 16 permutations (4096) giving the same CHECKSUM value&lt;br /&gt;
&lt;br /&gt;
This means I can with any two characters create same original checksum value 16 times. With any three characters (with a total of 65536 permuations), I can create 256 combinations resulting in the same decimal 123 checksum value.&lt;br /&gt;
&lt;br /&gt;
Let's now see how the likelyness of getting a collision (or a false positive) is.&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Courier New"&gt;Character      256^(c-1)     16^(c-1)&lt;br /&gt;
replacment     Permutations  Collisions&lt;br /&gt;
2                       256          16&lt;br /&gt;
3                     65536         256&lt;br /&gt;
4                  16777216        4096&lt;br /&gt;
5                4294967296       65536&lt;br /&gt;
6             1099511627776     1048576&lt;br /&gt;
7           281474976710656    16777216&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
From the table above, we can deduct that the number of collisions are the square root of the number possible permutations. This can be interpreted as "if you double the number of records, and calculate a checksum value, the likelyness of getting a collision (false positive) is quadrupled."&lt;br /&gt;
Triple the number of records and you have 9 times more chance of getting a collision (false positive).&lt;br /&gt;
&lt;br /&gt;
The reason I don't give more than 7 character example is that for the eight character, the leftmost 4 bits are rotated and xored to the lower part of the iterative CHECKSUM value. It doesn't matter really, because then the flushed bits must match the final "1011" in this example, so the other part still has 16 permutations.&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61183.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/checksum-weakness-explained.aspx</guid>
            <pubDate>Thu, 19 Aug 2010 14:15:51 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/08/19/checksum-weakness-explained.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61183.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61183.aspx</trackback:ping>
        </item>
        <item>
            <title>Joe Celko's Puzzles and Answers - The Restaurant seat assignment Problem</title>
            <category>Optimization</category>
            <category>SQL Server 2008</category>
            <category>Algorithms</category>
            <category>SQL Server 2005</category>
            <category>Celko Puzzle</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/07/31/joe-celkos-puzzles-and-answers-the-restaurant-seat-assignment-problem.aspx</link>
            <description>&lt;p&gt;This problem is designed to come up with a solution that uses the smallest amount of storage possible for a 1,000 seat restaurant.&lt;br /&gt;
I've come up with a solution that need only 125 bytes of storage. All other solutions covered in Mr Celko's book has at least 1,000 bytes of storage.&lt;br /&gt;
&lt;br /&gt;
Here is my solution, complete with all procedures to assign and release seats, together with views to display current status of each and one seat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Setup sample data&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;Seats &lt;span style="COLOR: blue"&gt;BINARY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;125&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Initialize an empty restaurant&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;o:p /&gt;&lt;/span&gt; &lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;Seats&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;0x&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Create procedure for handling seat assignment&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;PROCEDURE&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;spAssignSeat&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Seat &lt;span style="COLOR: blue"&gt;SMALLINT&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; @Block &lt;span style="COLOR: blue"&gt;TINYINT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Bit &lt;span style="COLOR: blue"&gt;TINYINT&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;@Block &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1 &lt;span style="COLOR: gray"&gt;+&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Bit &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;POWER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;%&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;UPDATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SET&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;Seats &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Bit &lt;span style="COLOR: gray"&gt;|&lt;/span&gt; @Block &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BINARY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 2 &lt;span style="COLOR: gray"&gt;+&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 124 &lt;span style="COLOR: gray"&gt;-&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Create procedure for handling seat clearance&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;PROCEDURE&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;spClearSeat&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Seat &lt;span style="COLOR: blue"&gt;SMALLINT&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; @Block &lt;span style="COLOR: blue"&gt;TINYINT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Bit &lt;span style="COLOR: blue"&gt;TINYINT&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;@Block &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1 &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; @Seat &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Bit &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;255 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;TINYINT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;^&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;POWER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;%&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;UPDATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SET&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;Seats &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Bit &lt;span style="COLOR: gray"&gt;&amp;amp;&lt;/span&gt; @Block &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BINARY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 2 &lt;span style="COLOR: gray"&gt;+&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 124 &lt;span style="COLOR: gray"&gt;-&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;/&lt;/span&gt; 8&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Create tally view&lt;o:p /&gt;&lt;/span&gt; &lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;VIEW&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwNums&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;L0&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c &lt;span style="COLOR: blue"&gt;UNION&lt;/span&gt; &lt;span style="COLOR: gray"&gt;ALL&lt;/span&gt; &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;L1&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; L0 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; A &lt;span style="COLOR: gray"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt; L0 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; B&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;L2&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; L1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; A &lt;span style="COLOR: gray"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt; L1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; B&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;L3&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; L2 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; A &lt;span style="COLOR: gray"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt; L2 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; B&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Nums &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;ROW_NUMBER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; c&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Number &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; L3&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;TOP&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;125&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;Number&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Nums&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;ORDER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;Number&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Create view CurrentSeatings&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;VIEW&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwCurrentSeatings&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;8 &lt;span style="COLOR: gray"&gt;*&lt;/span&gt; v&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;number &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; b&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;number &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Seat&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;SIGN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;SUBSTRING&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seats&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1 &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; v&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;number&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;amp;&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;POWER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; b&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;number&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Taken&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Restaurant &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;span style="mso-spacerun: yes"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwNums &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; v &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; v&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Number &lt;span style="COLOR: gray"&gt;BETWEEN&lt;/span&gt; 0 &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; 124&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwNums &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; b &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; b&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Number &lt;span style="COLOR: gray"&gt;BETWEEN&lt;/span&gt; 0 &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; 7&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Create the available seats sequence view&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;VIEW&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwAvailableSeats&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; cteSource&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seat&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Taken&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; grp&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Seat&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;Taken&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;Seat &lt;span style="COLOR: gray"&gt;-&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;ROW_NUMBER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;PARTITION&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; Taken &lt;span style="COLOR: blue"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; Seat&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; grp&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwCurrentSeatings&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;ROW_NUMBER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; grp&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Sequence&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seat&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; FromSeat&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Seat&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; ToSeat&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;cteSource&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;Taken &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 0&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;grp&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GO&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Display the wanted result&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Sequence&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;FromSeat&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;ToSeat&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;vwAvailableSeats&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;ORDER&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;Sequence&lt;br /&gt;
&lt;/span&gt;&lt;o:p /&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61176.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/07/31/joe-celkos-puzzles-and-answers-the-restaurant-seat-assignment-problem.aspx</guid>
            <pubDate>Fri, 30 Jul 2010 23:20:13 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/07/31/joe-celkos-puzzles-and-answers-the-restaurant-seat-assignment-problem.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61176.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61176.aspx</trackback:ping>
        </item>
        <item>
            <title>More on XML and encoding</title>
            <category>SQL Server 2005</category>
            <category>SQL Server 2008</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/07/06/More-on-XML-and-encoding.aspx</link>
            <description>&lt;p&gt;Today, let's examine encoding with SQL Server and XML datatype.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; @Inf &lt;span style="COLOR: blue"&gt;XML&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SET&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;     @Inf &lt;span style="COLOR: gray"&gt;=&lt;/span&gt;  &lt;span style="COLOR: red"&gt;'&amp;lt;?xml version="1.0" encoding="utf-16"?&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                 &amp;lt;root&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                    &amp;lt;names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                         &amp;lt;name&amp;gt;test&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;/names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                         &amp;lt;name&amp;gt;test1&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;/names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                 &amp;lt;/root&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                '&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;  x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'name[1]'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'VARCHAR(10)'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Name&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    @Inf&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;nodes&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'/root/names'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;x&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
If you try to run the code above, you will get an error message like this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;Msg 9402, Level 16, State 1, Line 3&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;XML parsing: line 1, character 39, unable to switch the encoding&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Why is that? If you change the encoding to UTF-8, the code works.&lt;br /&gt;
The solution is to know that UTF-16 works like UNICODE, and how do we denote UNICODE strings in SQL Server? Yes, by prefixing the string with N.&lt;br /&gt;
&lt;br /&gt;
So this code works with UTF-16 encoding and you can happily continue to work.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; @Inf &lt;span style="COLOR: blue"&gt;XML&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SET&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;     @Inf &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; N&lt;span style="COLOR: red"&gt;'&amp;lt;?xml version="1.0" encoding="utf-16"?&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                 &amp;lt;root&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                    &amp;lt;names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                         &amp;lt;name&amp;gt;test&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;/names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                         &amp;lt;name&amp;gt;test1&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                     &amp;lt;/names&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                 &amp;lt;/root&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 8pt"&gt;                '&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;  x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'name[1]'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'VARCHAR(10)'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Name&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    @Inf&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;nodes&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'/root/names'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;x&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61167.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/07/06/More-on-XML-and-encoding.aspx</guid>
            <pubDate>Tue, 06 Jul 2010 07:40:52 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/07/06/More-on-XML-and-encoding.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61167.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61167.aspx</trackback:ping>
        </item>
        <item>
            <title>String concatenation and entitization</title>
            <category>Algorithms</category>
            <category>Optimization</category>
            <category>SQL Server 2005</category>
            <category>SQL Server 2008</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/07/04/String-concatenation-and-entitization.aspx</link>
            <description>This question has been asked over and over again, and instead of having to redirect to any of my previous answers, I will cover the solution here in my blog.&lt;br /&gt;
&lt;br /&gt;
Consider this sample data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; @Sample &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;/span&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;    &lt;/span&gt;ID &lt;span style="COLOR: blue"&gt;INT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        Data &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;100&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;  @Sample&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;VALUES  &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'Peso &amp;amp; Performance SQL'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'MVP'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'Need help &amp;lt;? /&amp;gt; -- '&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'With XML string concatenation ?'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;The "trick" is to use the TYPE directive (to deal with entitization), and then use ".value" function to get the correct value out.&lt;br /&gt;
So here is the final query.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      i&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: fuchsia"&gt;STUFF&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;f&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Content&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'.'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'VARCHAR(MAX)'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        @Sample&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; i&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;CROSS&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;APPLY &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  &lt;span style="COLOR: red"&gt;', '&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; w&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; w&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   w&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; i&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FOR&lt;/span&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PATH&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;TYPE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; f&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Content&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt; And to deal with characters having ascii values less than 32 (space), you can use this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; cteSource&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;ID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Content&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      i&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    f&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Content&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'.'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'NVARCHAR(MAX)'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;FROM        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        @Sample&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; i&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: gray"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;APPLY&lt;/span&gt;&lt;span style="COLOR: blue"&gt;     &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;', '&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; w&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Data &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARBINARY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; w&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   w&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; i&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ID&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: blue"&gt;FOR&lt;/span&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PATH&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                                &lt;span style="COLOR: blue"&gt;TYPE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; f&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Content&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;  ID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: fuchsia"&gt;STUFF&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Content &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NVARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)),&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Content&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  ID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;N''&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt;&lt;span style="COLOR: gray"&gt;).&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'xs:base64Binary(sql:column("Content"))'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'VARBINARY(MAX)'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Content    &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;            &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    cteSource&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; d&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt; &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61166.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/07/04/String-concatenation-and-entitization.aspx</guid>
            <pubDate>Sun, 04 Jul 2010 21:59:57 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/07/04/String-concatenation-and-entitization.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61166.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61166.aspx</trackback:ping>
        </item>
        <item>
            <title>Proper Relational Division With Sets</title>
            <category>Algorithms</category>
            <category>Optimization</category>
            <category>SQL Server 2000</category>
            <category>SQL Server 2005</category>
            <category>SQL Server 2008</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx</link>
            <description>&lt;p&gt;I got an email from Mr Celko and he correctly stated that my &lt;a href="http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Relational-division.aspx"&gt;previous solution&lt;/a&gt; was not truly working with sets, so he posted me some solutions and proper sample data.&lt;br /&gt;
With this information at my hand, I started to investigate what really is needed to get this Relational Division to work properly with two sets; Dividend and Divisor. &lt;br /&gt;
&lt;br /&gt;
Some of you know me well, and know I am not satisfied with just solving the problem. There have to be some tweaks, and I did that too with this solution. Not only is it only touching the Dividend table once and Divisor table once, you can also set if you want a division with no remainder (which means all records in Divisor should match and not a single record more), or allow a division with remainder (which means all the records should match and maybe more records).&lt;br /&gt;
Great? Just set 1 for "No remainder" and 0 for "Allow remainder".&lt;br /&gt;
&lt;br /&gt;
Simple as that. So why does it work? Remember your old algebra? "Divide is the same thing as multiply with the inverse number..."&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now for the sample data (courtesy of Mr Celko)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;group_id &lt;span style="COLOR: blue"&gt;INTEGER&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;item_name &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;10&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;PRIMARY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;KEY &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;                                    group_id&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;br /&gt;
                                    item_name&lt;br /&gt;
                                &lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;item_name&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;VALUES&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'four'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;3&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;3&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;item_name &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;10&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PRIMARY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;KEY&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;o:p&gt;&lt;br /&gt;
&lt;/o:p&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;item_name&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;VALUES&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: red; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;'one'&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: red; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;'two'&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: red; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;'three'&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;Now for the 4 solutions posted by Mr Celko&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt"&gt;-- Celko 1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;       D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D2 &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; D2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt"&gt;-- Celko 2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;       D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;EXISTS&lt;/span&gt;&lt;span style="COLOR: blue"&gt;  &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  &lt;span style="COLOR: gray"&gt;*&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                                &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   D2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                                        &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; D2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                            &lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt"&gt;-- Celko 3&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                        item_name&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;PARTITION&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; group_id&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; cnt&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;       D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; cnt &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;D1&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;cnt&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt"&gt;--Celko 4&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; Divisor2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; item_name &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; 0 &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;PARTITION&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; group_id&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; single&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: fuchsia"&gt;SUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; item_name &lt;span style="COLOR: gray"&gt;IN &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; item_name &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; 0 &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;PARTITION&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; group_id&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; full_basket&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      D&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; D&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            Divisor2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;       D&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; Divisor2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; Divisor2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;single &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; Divisor2&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;full_basket &lt;span style="COLOR: gray"&gt;= &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Divisor&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    D&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;You can copy and paste the code to a query window and run them. Investigate the execution plan and compare the 4 of them.&lt;br /&gt;
And now to my solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: green"&gt;&lt;font size="2" face="Courier New"&gt;-- Peso 1&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;      group_id&lt;/span&gt; &lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt"&gt;FROM        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                            &lt;span style="COLOR: fuchsia"&gt;SUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; n&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; 0 &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; cnt&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                            &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Items&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: gray"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;  dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; n&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                &lt;span style="COLOR: blue"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;                            t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; d&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;SUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;cnt&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Items&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;cnt&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;gt;=&lt;/span&gt; 1    &lt;span style="COLOR: green"&gt;-- 1 means no remainder, 0 means remainder&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;After some challenging with MVP Adam Machanic, here is another version &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt"&gt;-- Peso v2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: blue"&gt;    SELECT&lt;/span&gt;      group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                    &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; cnt&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;    &lt;/span&gt;    &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: blue"&gt;    GROUP&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; kc&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;&lt;span style="COLOR: blue"&gt;  &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: blue"&gt;    SELECT&lt;/span&gt;  &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; cnt&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; nc &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; nc&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;cnt &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; kc&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;cnt&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;  dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; kc&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;  dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; n &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; n&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;item_name&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;nc&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;cnt&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;Here is an algorithm (exact division) which is really fast, but not 100% accurate due to the implementation of CHECKSUM (see &lt;font face=""&gt;&lt;a href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=70832"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=70832&lt;/a&gt;&lt;/font&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;&lt;span style="COLOR: green"&gt;&lt;font size="2" face="Courier New"&gt;-- Peso 3&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt"&gt;&lt;/span&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;      group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM        &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      group_id&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                            &lt;span style="COLOR: fuchsia"&gt;CHECKSUM_AGG&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; ca1&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                            &lt;span style="COLOR: fuchsia"&gt;CHECKSUM_AGG&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;REVERSE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;)))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; ca2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Dividend&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    group_id&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;&lt;span style="COLOR: blue"&gt;  &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  &lt;span style="COLOR: fuchsia"&gt;CHECKSUM_AGG&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; ca1&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                        &lt;span style="COLOR: fuchsia"&gt;CHECKSUM_AGG&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;REVERSE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;item_name&lt;span style="COLOR: gray"&gt;)))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; ca2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Divisor&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; n &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; n&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ca1 &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ca1&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;                &lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt"&gt;AND&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; n&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ca2 &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ca2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;Now copy my solutions and compare them to the other 4.&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;&lt;br /&gt;
&lt;br /&gt;
-- Celko 1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 3, logical reads 6.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 2, logical reads 20.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;-- Celko 2&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 3, logical reads 32.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 4, logical reads 8.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;-- Celko 3&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 3, logical reads 10.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Worktable'. Scan count 3, logical reads 31.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 1, logical reads 2.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;-- Celko 4&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 2, logical reads 9.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Worktable'. Scan count 3, logical reads 31.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 1, logical reads 38.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;-- Peso 1&lt;/span&gt; &lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 1, logical reads 19.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 1, logical reads 2.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;-- Peso 2&lt;/span&gt;&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 1, logical reads 8.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 2, logical reads 4.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;&lt;br /&gt;
-- Peso 3&lt;/span&gt;&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Divisor'. Scan count 1, logical reads 2.&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt;Table 'Dividend'. Scan count 1, logical reads 2.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;So it seems my solution is cleaner and faster than the previous existing. But the best thing is yet hidden. My solution cares for multi-column division (just expand the CASE and GROUP BY clauses) whereas the previous 4 do not. Well, not easily anyway.&lt;br /&gt;
It will involve some replacing for IN with EXISTS, and some string concatenation for the DISTINCT clauses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Peso&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61164.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx</guid>
            <pubDate>Thu, 01 Jul 2010 22:48:04 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx#feedback</comments>
            <slash:comments>36</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61164.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61164.aspx</trackback:ping>
        </item>
        <item>
            <title>Relational division</title>
            <category>Algorithms</category>
            <category>Optimization</category>
            <category>SQL Server 2000</category>
            <category>SQL Server 2005</category>
            <category>SQL Server 2008</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Relational-division.aspx</link>
            <description>&lt;p&gt;I came across an interesting post on Microsft SQL Server forum this afternoon. It was a question about Relational algebra and the poster wanted to have an efficient query to solve hos problem.&lt;br /&gt;
The problem could be solved with relational division, but there is no such operator in SQL Server. Maybe there will be same day.&lt;br /&gt;
For a fully working solution, see &lt;font face=""&gt;&lt;a href="http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx"&gt;http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
But for now there is no such operator, so we as developers have to find our own ways.&lt;br /&gt;
First prepare and populate some sample data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Prepare sample data&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; @Sample &lt;span style="COLOR: blue"&gt;TABLE&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;ParentID &lt;span style="COLOR: blue"&gt;INT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Keyword &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;25&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;UNIQUE &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;ParentID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Keyword&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Populate sample data&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;@Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;ParentID&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Keyword&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;VALUES&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'four'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;3&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;3&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;People had already been active and posted some solutions, of which this common query was present.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 3&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; x &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;and this type of query&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;EXISTS (&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="COLOR: gray"&gt;*&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; x&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;                        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;          &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;HAVING&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font size="2" face="Arial"&gt;And even a XML query!&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; AggStr&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;ParentId&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;','&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; c&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;@Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;c&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;c&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Keyword&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FOR&lt;/span&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt;&lt;span style="COLOR: blue"&gt;PATH&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; c1&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;DISTINCT&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                            &lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; p&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;AggStr&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;c1 &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: red"&gt;',one,three,two'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The good thing is that all three produce the same wanted result but the bad thing is the inefficient execution plans. Then one poster did his homework and read about &lt;a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/"&gt;Mr Celko&lt;/a&gt; and translated his algorithm to the current problem, and then the query looked like this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;ParentID&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                        &lt;/span&gt;Keyword&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                        &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;OVER &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;PARTITION&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; ParentID&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; cnt&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; w&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;Keyword &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; cnt &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 3&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;ParentID&lt;br /&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;HAVING&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;cnt&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;With these queries in mind, I thought about the problem and realized the problem did in fact have a much simpler solution.&lt;br /&gt;
The query I came up with is the simplest of them all, and just does one pass of the source table. Yes, only one pass just as the first Celko query for relational division, but without the internal worktable.&lt;br /&gt;
This is the query I came up with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;-- Peso&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;@Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;ParentID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;HAVING&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; Keyword &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; 0 &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 1&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;SUM&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CASE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHEN&lt;/span&gt; Keyword &lt;span style="COLOR: gray"&gt;IN&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'one'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'two'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'three'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;THEN&lt;/span&gt; 1 &lt;span style="COLOR: blue"&gt;ELSE&lt;/span&gt; 0 &lt;span style="COLOR: blue"&gt;END&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;How does the query work? The second aggregation filtering just makes sure all three keywords are present.&lt;br /&gt;
But the first aggregation filter? What does it do? To simplify, I just write that it takes care of the modulo part of the relational division. There cannot be a "fractional" part of the relational division, because it means that particular ParentID has more keywords than wanted.&lt;br /&gt;
&lt;br /&gt;
Simple as that.&lt;br /&gt;
&lt;br /&gt;
//Peso&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS. These are the textual execution plans for the four types of queries and then mine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;|--Filter(WHERE:([Expr1003]=CASE WHEN [Expr1007] IS NULL THEN (0) ELSE [Expr1007] END))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;|--Nested Loops(Left Outer Join, OUTER REFERENCES:([s].[ParentID]))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|--Filter(WHERE:([Expr1003]=(3)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(int,[Expr1014],0)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;|--Stream Aggregate(GROUP BY:([s].[ParentID]) DEFINE:([Expr1014]=Count(*)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;              &lt;/span&gt;|--Index Scan(OBJECT:(@Sample AS [s]),&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;WHERE:(@Sample.[Keyword] as [s].[Keyword]='one' OR @Sample.[Keyword] as [s].[Keyword]='three' OR @Sample.[Keyword] as [s].[Keyword]='two') ORDERED FORWARD)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1007]=CONVERT_IMPLICIT(int,[Expr1015],0)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                 &lt;/span&gt;|--Stream Aggregate(DEFINE:([Expr1015]=Count(*)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;|--Index Seek(OBJECT:(@Sample AS [x]), SEEK:([x].[ParentID]=@Sample.[ParentID] as [s].[ParentID]) ORDERED FORWARD)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;|--Filter(WHERE:([Expr1007]=(3)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1007]=CONVERT_IMPLICIT(int,[Expr1010],0)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|--Stream Aggregate(GROUP BY:([s].[ParentID]) DEFINE:([Expr1010]=Count(*)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                 &lt;/span&gt;|--Nested Loops(Left Anti Semi Join, OUTER REFERENCES:([s].[ParentID]))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;|--Index Scan(OBJECT:(@Sample AS [s]),&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;WHERE:(@Sample.[Keyword] as [s].[Keyword]='one' OR @Sample.[Keyword] as [s].[Keyword]='three' OR @Sample.[Keyword] as [s].[Keyword]='two') ORDERED FORWARD)&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;|--Index Seek(OBJECT:(@Sample AS [x]), SEEK:([x].[ParentID]=@Sample.[ParentID] as [s].[ParentID]),&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;WHERE:(@Sample.[Keyword] as [x].[Keyword]&amp;lt;&amp;gt;'one' AND @Sample.[Keyword] as [x].[Keyword]&amp;lt;&amp;gt;'three' AND @Sample.[Keyword] as [x].[Keyword]&amp;lt;&amp;gt;'two') ORDERED FORWARD)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt"&gt; |--Filter(WHERE:([Expr1008]=N',one,three,two'))&lt;br /&gt;
       |--Nested Loops(Inner Join, OUTER REFERENCES:([ParentID]))&lt;br /&gt;
            |--Stream Aggregate(GROUP BY:([ParentID]))&lt;br /&gt;
            |    |--Index Scan(OBJECT:(@sample), ORDERED FORWARD)&lt;br /&gt;
            |--UDX(([Expr1007], [C].[Keyword]))&lt;br /&gt;
                 |--Compute Scalar(DEFINE:([Expr1007]=CONVERT(varchar(max),',',0)+@sample.[Keyword] as [C].[Keyword]))&lt;br /&gt;
                      |--Index Seek(OBJECT:(@sample AS [C]), SEEK:([C].[ParentID]=[ParentID]) ORDERED FORWARD)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;|--Filter(WHERE:([Expr1005]=(3)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1005]=CONVERT_IMPLICIT(int,[Expr1010],0)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|--Stream Aggregate(GROUP BY:([ParentID]) DEFINE:([Expr1010]=Count(*)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                 &lt;/span&gt;|--Filter(WHERE:(([Keyword]='one' OR [Keyword]='three' OR [Keyword]='two') AND [Expr1004]=(3)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;|--Nested Loops(Inner Join)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                           &lt;/span&gt;|--Table Spool&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                           &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;|--Segment&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                           &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;|--Index Scan(OBJECT:(@Sample), ORDERED FORWARD)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                           &lt;/span&gt;|--Nested Loops(Inner Join, WHERE:((1)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                                &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1009],0)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                                &lt;/span&gt;|&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;|--Stream Aggregate(DEFINE:([Expr1009]=Count(*)))&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;                                &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;|&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;|--Table Spool&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 8pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                                &lt;/span&gt;|--Table Spool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #00b050; FONT-SIZE: 8pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;|--Filter(WHERE:([Expr1004]=(1) AND [Expr1005]=(3)))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;|--Stream Aggregate(GROUP BY:([ParentID]) DEFINE:([Expr1004]=MIN([Expr1006]), [Expr1005]=SUM([Expr1006])))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;|--Compute Scalar(DEFINE:([Expr1006]=CASE WHEN [Keyword]='three' OR [Keyword]='two' OR [Keyword]='one' THEN (1) ELSE (0) END))&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                 &lt;/span&gt;|--Index Scan(OBJECT:(@Sample), ORDERED FORWARD)&lt;br /&gt;
&lt;/span&gt;
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61161.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Relational-division.aspx</guid>
            <pubDate>Wed, 30 Jun 2010 19:41:51 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Relational-division.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61161.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61161.aspx</trackback:ping>
        </item>
        <item>
            <title>Another bin-packaging algorithm using recursion and XML</title>
            <category>Algorithms</category>
            <category>Optimization</category>
            <category>SQL Server 2005</category>
            <category>SQL Server 2008</category>
            <link>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Another-bin-packaging-algorithm-using-recursion-and-XML.aspx</link>
            <description>&lt;div&gt;This time I will show you an algorithm to do the dreaded bin-packaging using recursion and XML.&lt;br /&gt;
First, create some sample data like this&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Prepare sample data&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; @Sample &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;    &lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;INT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;IDENTITY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PRIMARY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;KEY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CLUSTERED&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        Expense &lt;span style="COLOR: blue"&gt;SMALLMONEY&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Populate sample data&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;  @Sample&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        Expense&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;VALUES  &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;12.51&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;45.63&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;66.35&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;92.66&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;65.46&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;54.01&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;32.23&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;27.16&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;78.92&lt;span style="COLOR: gray"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;14.58&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;font face="Arial"&gt;Next, we need to create a variable to hold the user's wanted total sum.&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Prepare user supplied parameter&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; @WantedSUM &lt;span style="COLOR: blue"&gt;SMALLMONEY&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 111.09&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
And we also need to create a temporary staging table to hold the valid combinations&lt;/font&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Prepare temporary staging table&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; @Temp &lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        CombID &lt;span style="COLOR: blue"&gt;INT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;IDENTITY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PRIMARY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;KEY&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CLUSTERED&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        TrackPath &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
Now we only have to do the calculations! &lt;br /&gt;
Here I am using a special trick to get the unique combination, since the path of records 1&amp;gt;2&amp;gt;3 is the same as 1&amp;gt;3&amp;gt;2, 2&amp;gt;1&amp;gt;3, 2&amp;gt;3&amp;gt;1, 3&amp;gt;1&amp;gt;2 and 3&amp;gt;2&amp;gt;1. See explanation between combination and permutation at Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Permutation"&gt;here&lt;/a&gt;.&lt;br /&gt;
To keep track of which records I already have used in the total sum, I simply remove the record id (RowID) from the Hits list.&lt;br /&gt;
And, to give the correct answer at the end, I build a XML string with visited RowID's building up the correct sum.&lt;/font&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Calculate all possible permutations using recursion&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; ctePack&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Total&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Hits&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; TrackPath&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;    SELECT&lt;/span&gt;  s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Total&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; x &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;gt;&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;ORDER BY x.RowID&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FOR&lt;/span&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt; &lt;span style="COLOR: blue"&gt;PATH&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Hits&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;        &lt;/span&gt;&lt;span style="COLOR: red"&gt;'&amp;lt;ID&amp;gt;'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'&amp;lt;/ID&amp;gt;'&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; TrackPath&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: gray"&gt;&amp;lt;=&lt;/span&gt; @WantedSum&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;    UNION&lt;/span&gt; &lt;span style="COLOR: gray"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Total &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;            &lt;span style="COLOR: fuchsia"&gt;REPLACE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Hits&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Hits&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;        &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;            p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;TrackPath &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'&amp;lt;ID&amp;gt;'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'&amp;lt;/ID&amp;gt;'&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; TrackPath&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;INNER&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN &lt;/span&gt; ctePack &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; p &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Hits &lt;span style="COLOR: gray"&gt;LIKE&lt;/span&gt; &lt;span style="COLOR: red"&gt;'%#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#%'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;       p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Total &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: gray"&gt;&amp;lt;=&lt;/span&gt; @WantedSum&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;      @Temp&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;            &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;            TrackPath&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: fuchsia"&gt;MIN&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;TrackPath&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        ctePack&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;       Total &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; @WantedSum&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    Hits&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;When the iterations are over, and we have the wanted combniation(s), the task left is to report the records giving us the correct sum.&lt;br /&gt;
We also need the records grouped so that we can see which group each expense belong to. In same cases, one and the same record may used in multiple groups.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Display the final resultset&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;      t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;CombID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        @Temp &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; t&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;CROSS&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;APPLY&lt;/span&gt; t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;TrackPath&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;nodes&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'/ID'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; f&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;n&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;INNER&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;JOIN &lt;/span&gt; @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; f&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;n&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;value&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'.'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'INT'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;ORDER&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt;    t&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;CombID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;    &lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
If you don't want to use XML, you can write the recursive cte like this, to get all included records directly.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;&lt;/span&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 8pt"&gt;-- Calculate all possible permutations using recursion&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;WITH&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; ctePack&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;RowID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Expense&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Total&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Tracker&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;AS &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;  s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Total&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                    SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;      &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                    FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; x&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                    WHERE&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;       x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: gray"&gt;&amp;lt;&amp;gt;&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;                    ORDER BY&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    x&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;br /&gt;
&lt;/span&gt;                    FOR&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;XML&lt;/span&gt;     &lt;span style="COLOR: blue"&gt;PATH&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;''&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;                )&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Tracker&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;    @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;   s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: gray"&gt;&amp;lt;=&lt;/span&gt; @WantedSum&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;UNION&lt;/span&gt; &lt;span style="COLOR: gray"&gt;ALL&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt;      s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Total &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;                    &lt;span style="COLOR: fuchsia"&gt;REPLACE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Tracker&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Tracker&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt;        @Sample &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; s&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: gray"&gt;INNER&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;  ctePack &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; p &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Tracker &lt;span style="COLOR: gray"&gt;LIKE&lt;/span&gt; &lt;span style="COLOR: red"&gt;'%#'&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;CAST&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;RowID &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; &lt;span style="COLOR: blue"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))&lt;/span&gt; &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; &lt;span style="COLOR: red"&gt;'#%'&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt;       p&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Total &lt;span style="COLOR: gray"&gt;+&lt;/span&gt; s&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Expense &lt;span style="COLOR: gray"&gt;&amp;lt;=&lt;/span&gt; @WantedSum&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;  &lt;span style="COLOR: blue"&gt;DISTINCT&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: fuchsia; FONT-SIZE: 8pt"&gt;        DENSE_RANK&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: gray; FONT-SIZE: 8pt"&gt;()&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt; &lt;span style="COLOR: blue"&gt;OVER &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR: blue"&gt;BY&lt;/span&gt; Tracker&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; CombID&lt;span style="COLOR: gray"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        RowID&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;        &lt;br /&gt;
        Expense&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;FROM&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;    ctePack&lt;br /&gt;
&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 8pt"&gt;WHERE&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"&gt;   Total &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; @WantedSum&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;font color="#808080" face="Courier New"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61159.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Peter Larsson</dc:creator>
            <guid>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Another-bin-packaging-algorithm-using-recursion-and-XML.aspx</guid>
            <pubDate>Wed, 30 Jun 2010 11:44:40 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/peterl/archive/2010/06/30/Another-bin-packaging-algorithm-using-recursion-and-XML.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61159.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61159.aspx</trackback:ping>
        </item>
    </channel>
</rss>