【发布时间】:2015-06-14 15:35:10
【问题描述】:
我有一个表 channel_merge 喜欢
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 的值介于 column1 到 column512 之间 行数可以在 8k 到 20k 之间变化 我想要一个矩阵 (512X512),其值表示矩阵中各个列组合之间的条目数。
我打破了 512 个 100 个 int 组,使用 PIVOT 处理,然后附加到完整矩阵中 使用的枢轴函数如下枢轴查询
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
在一个数据库中运行良好
但最近在使用其他数据库。 使用我的程序(包含上述查询)运行不同时间时,它会返回不正确的结果和不同的结果
当我将分组从 100 列减少到 30 列时,结果看起来很合适。
能否请您帮助我确定哪些数据库参数正在影响或可能影响上述查询的结果。
我需要考虑的任何 Pivot 限制
两个数据库都是相同版本的 SQL server 2008 SP2。
提前致谢。
示例: 输入Channel_merge表(column1 to 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
【问题讨论】:
-
您能否提供一些示例数据和预期的输出?
标签: sql-server sql-server-2008 pivot pivot-table