PIVOT给予不正确的输出时没有列的增加
我有一个表channel_merge 像PIVOT给予不正确的输出时没有列的增加
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
其中columnX值列1之间的范围,以column512 没有行可到20K 8K之间各不相同,我想一个矩阵(512X512),其值代表矩阵中各列组合之间的条目数。
我打破了100 512个INT组,过程与PIVOT,后来追加到全矩阵 使用的支点finction是如下支点查询
select [COLUMN1],[COLUMN10],[COLUMN100],[COLUMN101],[COLUMN102],[COLUMN103],[COLUMN104],[COLUMN105],[COLUMN106],[COLUMN107],[COLUMN108],[COLUMN109],[COLUMN11],[COLUMN110],[COLUMN111],[COLUMN112],[COLUMN113],[COLUMN114]..100 columns INTO FINAL1
from
(
select channel_1,channel_1 as CHANNEL_11,CHANNEL_2 from CHANNEL_MERGE
) P
pivot
(
count(CHANNEL_11) for CHANNEL_2 in ([COLUMN1],[COLUMN10],[COLUMN100],[COLUMN101],[COLUMN102],[COLUMN103],[COLUMN104],[COLUMN105],[COLUMN106],[COLUMN107],[COLUMN108],[COLUMN109],[COLUMN11],[COLUMN110],[COLUMN111],[COLUMN112],[COLUMN113],[COLUMN114]....100columns)
) as pvt
在一个DB
工作得很好,但最近使用它的其他数据库。 与我的程序(包含上述查询)运行不同时间时,它返回不正确的结果和不同的结果
当我将组从100列减少到30列时,结果看起来是正确的。
请帮我确定哪些数据库参数影响或可以影响上述查询的结果。
枢纽的任何限制,我需要在审议
两个数据库是同一版本的SQL Server 2008 SP2的。
在此先感谢。
例子: 输入Channel_merge表(列1至column5)考虑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
所以预期输出是矩阵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 .. 这一个是棘手,但很开心这样做..
declare @distcols as nvarchar(max) = ''
select @[email protected] +'['+ (a.channel_2)+'],' from (select distinct channel_2 from TableName) a
set @distcols = substring(@distcols,0,len(@distcols))
declare @dynamicsql as nvarchar(max) = 'select * from
(
select channel_1, channel_2, count(channel_1) as distinctcount from TableName
group by channel_1, channel_2
) as sourcetable
pivot
(
Min(distinctcount)
FOR channel_2 IN ('
set @dynamicsql = @dynamicsql + @distcols + ')
)
as pivottable'
print @dynamicsql
exec (@dynamicsql)
供您参考:
感谢您的输入和时间.. 我的问题是它在服务器失败..当你在@distcolumns中分组100列(whi它成功的在其他服务器).. 当减少到60列..它的作品。 .. 但在channel_merge中数据增加时失败.. 我希望它的服务器存储器问题(不确定。).. – user3227783
“失败”是什么意思?它显示任何特定的错误? –
对不起,它返回不正确的(矩阵值将混乱)输出,但没有任何错误.. 现在我发现表列(channel_1和channel_2)被定义为varchar(2000)(由一些actaully)..现在我chnaged它到varchar(130)(这是必要的) 和结果看起来是合适的.. 我认为,当处理..它需要更多的内存,并导致输出损坏(我不知道) 但现在看起来很好。 。 – user3227783
你能否提供一些样本数据和预期的输出? – FutbolFan