根据1-N关系将表彼此对齐

时间:2018-10-13 20:47:29

标签: sql sql-server

我有两个桌子。一个包含所有服务及其价值。第二张表将描述哪些服务与哪些服务相关。

表1:

|Service|Value|
---------------
| S1    | 1   |
| S1    | 2   |
| S2    | 4   |
| S3    | 5   |
| S4    | 6   |
| S4    | 8   |
| S4    | 7   |
| S5    | 3   |

表2:相关服务。 1-N关系

|Service|Related|
|---------------|
| S1    | S3    |
| S1    | S4    |
| S2    | S5    |

因此,我希望将服务及其相关服务彼此对齐。像这样。值可以按升序显示。

|Service|Value(asc)|Related_Service|Value(asc)|
----------------------------------------------|
| S1    | 1        | S3            | 5        |
| S1    | 2        | S3            | null     |
| S1    | 1        | S4            | 6        |
| S1    | 2        | S4            | 7        |
| S1    | null     | S4            | 8        |
| S2    | 4        | S5            | 3        |

在SQL或T-SQL中可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT a.*, b.*
FROM t2
LEFT JOIN t1 a ON t2.Service = a.Service
LEFT JOIN t1 b ON t2.Related = b.Service
ORDER BY a.value, b.value;

答案 1 :(得分:0)

这看起来像我想要的。使用Row_Number()帮助了我!

UserRepository