SQL Server中,不用游标行变列的另一种高效方法

来源:互联网 发布:rrt算法是什么 编辑:程序博客网 时间:2024/05/21 11:21

这个解决方案大概是10年前想到的,以前做数据分析的时候,常常用到这个办法。当时在60W数据的时候,速度比用游标快10多倍,当时是个年轻菜鸟(现在是年老的),也可能是游标使用不当。这个需要程序配合

 

假设有如下几个表

Location 地区表

Id Name 1 中国                  2 美国                  3 英国                  4 法国                 

 

Productor表

Id Name 1 产品1 2 产品2 3 产品3 4 产品4

 

他们之间的关系表 Productor_LocationRelation

ProductorId LocationId 1 1 1 4 2 2 4 4

 

输出的目标如下:

  中国 美国 英国 法国 产品1 Yes No No Yes 产品2 No Yes No No 产品3 NO No NO No 产品4 No No No Yes

 

用Sql的办法是 生成 Location和Productor的 笛卡尔表,然后和Relation表格 left Join。Sql如下。

Code

 

数据如下:

image

 

怎样输出表格就不写了,反正每4行数据就代表输出的一行,4这个数字由Location的数据决定的。

原创粉丝点击