<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-29286778.post4253818727026058101..comments</id><updated>2011-04-18T02:57:30.970-04:00</updated><category term='Feature Creeper'/><category term='FAQs and not so FAQs'/><category term='SQL Puzzles'/><category term='Pass time with SQL'/><title type='text'>Comments on SQL Garbage Collector: Pivot Query Generator for SQL Server 2000</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sqlpointers.com/feeds/4253818727026058101/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/4253818727026058101/comments/default'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/pivot-query-generator-for-sql-server.html'/><author><name>Omnibuzz</name><uri>http://www.blogger.com/profile/04342835880399785393</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29286778.post-2371343614344879746</id><published>2011-02-04T17:53:15.221-05:00</published><updated>2011-02-04T17:53:15.221-05:00</updated><title type='text'>Thank you very helpful!

did a small upgrade to or...</title><content type='html'>Thank you very helpful!&lt;br /&gt;&lt;br /&gt;did a small upgrade to order the pivot column by an index (optional):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE proc [GeneratePivotQuery] (&lt;br /&gt; @TableName varchar(100), -- Table to select from&lt;br /&gt; @AggregateFunction varchar(10), -- Aggregate to be done on the value column&lt;br /&gt; @ValueColumn varchar(100),&lt;br /&gt; @PivotColumn varchar(100), -- Column for which the values needs to be transposed&lt;br /&gt; @FilterCondition varchar(1000), -- Filtering to be done on choosing the pivot values&lt;br /&gt; @PivotColumnOrderBy varchar(100),&lt;br /&gt; @OtherColumns varchar(1000)) -- Columns selected other than the pivot columns&lt;br /&gt;as&lt;br /&gt;begin&lt;br /&gt; declare @List varchar(2000)&lt;br /&gt; set @List = &amp;#39;&amp;#39;;&lt;br /&gt;&lt;br /&gt; declare @ConcatQuery varchar(4000)&lt;br /&gt; declare @CurColumn varchar(100)&lt;br /&gt; declare @OrderColumn varchar(100)&lt;br /&gt;&lt;br /&gt; set @ConcatQuery = &amp;#39;DECLARE C1 CURSOR global FAST_FORWARD FOR select distinct &amp;#39;+&lt;br /&gt; @PivotColumn + isnull(&amp;#39;, &amp;#39; + @PivotColumnOrderBy,&amp;#39;&amp;#39;) + &amp;#39; from &amp;#39; + @TableName + isnull(&amp;#39; where &amp;#39; + @FilterCondition,&amp;#39;&amp;#39;) + &lt;br /&gt; isnull(&amp;#39; order by &amp;#39; + @PivotColumnOrderBy, &amp;#39;&amp;#39;)&lt;br /&gt;&lt;br /&gt; exec(@ConcatQuery)&lt;br /&gt;&lt;br /&gt; open C1&lt;br /&gt;&lt;br /&gt; IF(@PivotColumnOrderBy IS NULL)&lt;br /&gt;  fetch next from C1 into @CurColumn&lt;br /&gt; ELSE&lt;br /&gt;  fetch next from C1 into @CurColumn, @OrderColumn&lt;br /&gt;&lt;br /&gt; set @List = @list + @AggregateFunction + &amp;#39;( case when [&amp;#39; + @PivotColumn +&lt;br /&gt; &amp;#39;] = &amp;#39;&amp;#39;&amp;#39; + @CurColumn + &amp;#39;&amp;#39;&amp;#39; then &amp;#39; +&lt;br /&gt; @ValueColumn + &amp;#39; else null end ) as [&amp;#39; + @CurColumn + &amp;#39;]&amp;#39;&lt;br /&gt;&lt;br /&gt; while (@@fetch_status = 0)&lt;br /&gt; begin&lt;br /&gt;&lt;br /&gt; IF(@PivotColumnOrderBy IS NULL)&lt;br /&gt;  fetch next from C1 into @CurColumn&lt;br /&gt; ELSE&lt;br /&gt;  fetch next from C1 into @CurColumn, @OrderColumn&lt;br /&gt;&lt;br /&gt; if(@@fetch_status = 0)&lt;br /&gt;  set @List = @list + &amp;#39;,&amp;#39; + char(10) + char(9) + @AggregateFunction + &amp;#39;( case when [&amp;#39; + @PivotColumn +&lt;br /&gt;  &amp;#39;] = &amp;#39;&amp;#39;&amp;#39; + @CurColumn + &amp;#39;&amp;#39;&amp;#39; then &amp;#39; +&lt;br /&gt;  @ValueColumn + &amp;#39; else null end ) as [&amp;#39; + @CurColumn + &amp;#39;]&amp;#39;&lt;br /&gt;&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; close c1&lt;br /&gt; deallocate c1&lt;br /&gt;&lt;br /&gt; /* this will print the query used to generate the pivoted result */&lt;br /&gt; print &amp;#39;/*query begin*/&amp;#39; + char(10) + char(10) + &amp;#39;select &amp;#39;+ char(10) + char(9) + @OtherColumns + &amp;#39;,&amp;#39; + char(10)+ char(9) + @List + char(10) + &amp;#39; from &amp;#39; + @TableName +&lt;br /&gt; char(10) + &amp;#39; group by &amp;#39; + char(10)+ char(9) + @OtherColumns + char(10) + char(10) + &amp;#39;/*query end*/&amp;#39; + replicate(char(10),5)&lt;br /&gt;&lt;br /&gt; /* this will generate the result set */&lt;br /&gt; exec (&amp;#39;select &amp;#39; + @OtherColumns + &amp;#39;,&amp;#39; + @List + &amp;#39; from &amp;#39; + @TableName +&lt;br /&gt; &amp;#39; group by &amp;#39; + @OtherColumns )&lt;br /&gt;&lt;br /&gt;end</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/4253818727026058101/comments/default/2371343614344879746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/4253818727026058101/comments/default/2371343614344879746'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/pivot-query-generator-for-sql-server.html?showComment=1296859995221#c2371343614344879746' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sqlpointers.com/2006/11/pivot-query-generator-for-sql-server.html' ref='tag:blogger.com,1999:blog-29286778.post-4253818727026058101' source='http://www.blogger.com/feeds/29286778/posts/default/4253818727026058101' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1387193161'/></entry></feed>
