Sql 在没有匹配列的情况下联接三个表
我想使用ssis 2008创建一个地理维度。我有3个表源 这是解释Sql 在没有匹配列的情况下联接三个表,sql,join,ssis,dimension,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 ------------
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个表分组在同一地理维度中
那么,我该怎么做呢
此外,当使用另一个维度(例如客户维度)时,也会使用此地理维度。我们希望根据客户的地理位置或某个城市的顶级销售人员了解客户的收入
在customer和salesperson表中,您可以将这3个表作为外键找到。您不需要三个表都共享的“公共列”
在每对表之间确实需要一个“列”。你还打算如何链接它们
问:有没有把“国家”和“城市”联系起来的专栏?你应该在“城市”中有一个“国家代码”栏
问:有没有办法将“领土”与“邮政编码”或“国家”联系起来?如果“是”:问题已解决。请列出字段。如果“不”。。。然后您需要更改模式。根据您对paulsm4的评论,然后您需要使用包含链接信息的表来连接到上述三个表中的每一个 另一方面,如果你真的想加入这三个表 从国家/地区选择* 完全外部连接[邮政编码] 关于“a”=“a” 完全外接领土 关于“b”=“b”
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)
这里假设Customer和salesperson表包含代码,而不是country、territory和country的值
上面的代码将为您想要的地理位置构建一个维度。当然,如果在customer/salesperson表中添加任何其他唯一的城市、国家或地区代码,则需要将其添加到维度中。这只是一个初始负载。您可能还需要修改代码,以说明三个限定符中的任何一个为空。您知道属于某个特定城市或某个国家所有城市的所有邮政编码吗?如果没有这些中间知识,你希望机器怎么做?(即外键等)。如果捕获到丢失的数据,则不能指望计算机来填补空白。这里有一些属于同一城市的邮政编码。正如我所解释的,这3个表可以以某种方式链接到客户表或销售线表中……不,没有将国家与城市或国家与地区链接的列。无论如何,在客户表或销售人员表中,它们都有某种链接。例如,在客户表中,有name、city、country、territory。我认为最好的答案是,你们告诉我,如果没有公共列,就不可能加入,因为每个维度customer和salesson都要创建自己的字段(country、city…)。您如何看待此解决方案?国家代码(如“美国”)和/或城市代码(如“1000”)-是。显然,除非有链接的对象,否则无法链接这些表:)我尝试了它,但它给了我重复的行。对于第三个表,它没有显示任何内容。