连接三个没有匹配列的表

时间:2012-07-07 17:28:15

标签: sql join ssis dimension

我想使用ssis 2008创建地理维度。我有3个表源。

以下是解释

Table 1 = Country: country code and country name 
Table 2 = Post code: post code and city name
Table 3 = Territory : Territory code and Territory name

以下是数据的外观

[Table 1= Country]

      code name  
     ------------------
       US | United states 
       CA | Canada 

[Table 2= post code] 

      Code    city  
     ---------------
       1000  |  Paris
       2000  |  Niece

[Table 3= Territory]

       Code    name
      ----------------
       N    |   North
       S    |   south

正如您所看到的,没有单一的公共列,我想将这3个表分组到相同的地理维度中。

那么,我该怎么做呢?

此外,这个地理位置的使用将是另一个维度,例如客户维度。我们想根据他的地理位置或某个城市的顶级销售人员了解客户的收入。

在客户和销售人员表中,您都可以找到这些3作为外键。

3 个答案:

答案 0 :(得分:0)

需要所有三个表共享的“公共列”。

需要每个表之间的“列列”。你还怎么把它们联系起来???

问:是否有任何专栏将“国家”与“城市”联系起来?您应该在“city”中有一个“国家/地区代码”列。

问:有没有办法将“地区”与 “邮政编码”或“国家/地区”相关联?如果“是”:问题解决了。请列出字段。如果“否”......则需要更改架构。

答案 1 :(得分:0)

根据您对paulsm4的评论,您希望使用那些包含链接信息的表来连接上述3个表中的每一个。

另一方面,如果你真的想加入这三个表

从国家/地区选择* 全外连接[邮政编码]   在'a'='a' 全外联盟领土   在'b'='b'

答案 2 :(得分:0)

create table dim.geography (geoID int,citycode int, countrycode char(2),territorycode char(1))

insert into dim.geography (select city as citycode,country as countrycode, territory as territorycode from Customer union select city, country,territory from salesperson)

此处假设客户和销售人员表格包含代码,而不是国家,地区和国家/地区的值。

上面的代码将为您想要的地理位置构建维度。当然,如果您将任何其他唯一城市,国家/地区代码添加到客户/销售人员表中,则需要将其添加到维度中。这只是一个初始负载。您可能还需要修改代码以在三个限定符中的任何一个中考虑空值。