sql server - PIVOT giving incorrect output when no of columns increase -


i have table channel_merge like

channel_1 | channel_2 ---------------------- column1   | column343 column1   | column392 column1   | column267 column1   | column198 column1   | column400 column2   | column348 column2   | column97 column1   | column97 column3   | column343 column3   | column65 column4   | column33 

where columnx values ranges between column1 column512 no of rows can vary between 8k 20k , wanted matrix (512x512) value representing number of entries between respective combination of columns in matrix.

i broke 512 int groups of 100, process pivot , later append full matrix pivot finction used following pivot query

select [column1],[column10],[column100],[column101],[column102],[column103],[column104],[column105],[column106],[column107],[column108],[column109],[column11],[column110],[column111],[column112],[column113],[column114]..100 columns final1  ( select channel_1,channel_1 channel_11,channel_2 channel_merge  ) p pivot  ( count(channel_11) channel_2 in ([column1],[column10],[column100],[column101],[column102],[column103],[column104],[column105],[column106],[column107],[column108],[column109],[column11],[column110],[column111],[column112],[column113],[column114]....100columns) ) pvt 

which worked fine in 1 db

but using other db. returns incorrect results , different results when ran different times procedure(containing above query)

when reduced grouping 100 columns 30 columns results proper.

could please me in determining db parameter(s) effecting or can effect result of above query.

any limitation of pivot need take in consideration

both db of same version sql server 2008 sp2.

thanks in advance.

example: input channel_merge table (column1 column5)considering 5x5

channel_1   channel_2 column1 column2 column2 column1 column2 column3 column2 column3 column2 column3 column2 column4 column3 column2 column3 column2 column3 column2 column3 column5 column3 column5 column4 column2 column5 column3 column5 column3 

so expected output matrix 5x5

 0  1   0   0   0  1  0   3   1   0  0  3   0   0   2  0  1   0   0   0  0  0   2   0   0 

tada.. 1 tricky, had fun doing it..

declare @distcols nvarchar(max) = '' select @distcols=@distcols +'['+ (a.channel_2)+'],' (select distinct channel_2 tablename) set @distcols = substring(@distcols,0,len(@distcols)) declare @dynamicsql nvarchar(max) = 'select * (            select channel_1, channel_2, count(channel_1) distinctcount tablename          group channel_1, channel_2  ) sourcetable pivot (     min(distinctcount)     channel_2 in ('  set @dynamicsql = @dynamicsql + @distcols + ') ) pivottable'  print @dynamicsql exec (@dynamicsql) 

for reference :

enter image description here


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -