聚类存储过程分析

http://topic.csdn.net/u/20110706/10/36fe794a-b528-48d5-9474-9783f37f2dba.html

这个帖子里的问题


SELECT     tmp1.str1, tmp2.str2
FROM         master.dbo.spt_values LEFT JOIN
                          (SELECT DISTINCT dense_rank() OVER (ORDER BY str1) AS expr1, str1
FROM         tb) AS tmp1 ON tmp1.expr1 = master.dbo.spt_values.number LEFT JOIN
    (SELECT DISTINCT dense_rank() OVER (ORDER BY str2) AS expr2, str2
FROM         tb) AS tmp2 ON tmp2.expr2 = master.dbo.spt_values.number
WHERE     master.dbo.spt_values.type = 'p' AND master.dbo.spt_values.number <= 5

master.dbo.spt_values这张表里有从1到2048,type为P的整数


dense_rank() 表示浓度排名,意思是相同的值在排名中只占一个位次,有两人并列第二名,不会造成第三名顺延成第四名


 master.dbo.spt_values.number <= 5
这句是为了不让多余的null 占用空间


最后把tb表放上:







原文地址:https://www.cnblogs.com/rav009/p/5131244.html