我有两张桌子:
ZE:
Zone LandUse
101 Uni
102 Mall
103 Gym
104 Uni
105 Residential
Uni_Distribution:
Zone Distribution
1 0.1
2 0.2
3 0.3
4 0.4
5 0.1
我想加入这些表格以提供以下内容(仅调用名为University
的土地使用的区域ID):
Origin Destination Distribution
101 1 0.1
101 2 0.2
101 3 0.3
101 4 0.4
101 5 0.1
1 101 0.1
2 101 0.2
3 101 0.3
4 101 0.4
5 101 0.1
104 1 0.1
104 2 0.2
104 3 0.3
104 4 0.4
104 5 0.1
1 104 0.1
2 104 0.2
3 104 0.3
4 104 0.4
5 104 0.1
也就是说,我希望能够以这样的方式加入这两个表:我可以将每个表中的区域ID用作两个单独的列,我需要为每个唯一的列重复ZE.Zone
Uni_Distribution
表的一行。当Land Land为ZE
时,我还需要查询仅使用表University
中的区域ID。
我已经尝试了以下查询作为开始只是获取表的一部分,但是我在这个阶段没有得到我想要的东西(Origin的大多数是NULL值)。
SELECT
ZE.[Zone] AS Origin,
U.[Zone] AS Destination,
U.[Distribution]
FROM ZE
RIGHT JOIN [dist].[University_Distribution] AS U
ON U.Zone = ZE.[Zone]
答案 0 :(得分:0)
我认为你基本上想要一个cross join
:
SELECT ZE.[Zone] as Origin, U.[Zone] as Destination, U.[Distribution]
FROM ZE CROSS JOIN
[dist].[University_Distribution] U
WHERE ZE.land_use = 'UNI';
这只是你想要的一半。对于完整的解决方案,您还需要UNION ALL
:
SELECT ZE.[Zone] as Origin, U.[Zone] as Destination, U.[Distribution]
FROM ZE CROSS JOIN
[dist].[University_Distribution] U
WHERE ZE.land_use = 'UNI'
UNION ALL
SELECT U.[Zone] as Destination, ZE.[Zone] as Origin, U.[Distribution]
FROM ZE CROSS JOIN
[dist].[University_Distribution] U
WHERE ZE.land_use = 'UNI';