多个位置参考位置维度

Multiple location to reference location dimension

我正在尝试映射与我的位置维度关联的值 - 维度如下所示:

LocationID Country State City Zip Code Longitude Latitude
1 USA NY Manhattan
2 USA NY Yonkers
3 USA NY Buffalo

我正在接收交易数据,其中多个区域可能被识​​别为一个值。例如,我将获得城市的价值:Yonkers/Manhattan 和 Manhattan/Yonkers.

交易数据示例:

TransID From City To City
1 Yonkers/Manhattan Manhattan/Yonkers
2 Manhattan/Yonkers Yonkers/Buffalo

规则是'From City'中的第一个城市链接到位置维度时应该使用最后一个城市[=31] =] 在 'To City' 链接到位置维度时应该使用。最后的结果应该是这样的:

TransID From City ID To City ID
1 2 2
2 1 3

如果能提供任何帮助,我将不胜感激。

我尝试通过在维度 table 和事务 table 上使用内部联接获得了所需的结果。在 ON 条件下使用子字符串连接第一个城市和最后一个城市。

查询:

select distinct loc.TransID, dim_FC.LocationID as from_city_id, dim_LC.LocationID as to_city_id from trans_location loc
INNER JOIN dim_location dim_FC ON dim_FC.City = substring(loc.[From City], 1, charindex('/',loc.[From City])-1)
INNER JOIN dim_location dim_LC ON dim_LC.City = reverse(substring(reverse(loc.[To City]),1,charindex('/',REVERSE(loc.[To City]))-1))
order by loc.TransID