我正在寻找一个SQL查询,它将使用一个记录中的值从同一个表中的附加记录中选择一个值,从一行中的两个记录中的每一个返回一个值。
假设我有下表,其中ref_id列值将为null或将包含另一个记录的id值。 id字段是主键。
id | name | ref_id
----+---------+--------
1 | Joe | NULL
2 | Sally | NULL
3 | Steve | 2
4 | James | 1
5 | George | 2
我需要一个返回以下结果的查询:
name | ref_name
---------+----------
Joe | NULL
Sally | NULL
Steve | Sally
James | Joe
George | Sally
有人可以建议解决方案吗?
提前感谢您的帮助。
答案 0 :(得分:1)
测试数据
DECLARE @TABLE TABLE( id INT, name VARCHAR(20),ref_id INT)
INSERT INTO @TABLE VALUES
( 1, 'Joe', NULL),
( 2, 'Sally', NULL),
( 3, 'Steve', 2),
( 4, 'James', 1),
( 5, 'George', 2)
<强>查询强>
SELECT A.Name , B.Name As Ref_Name
FROM @TABLE A LEFT JOIN @TABLE B
ON A.Ref_ID = B.id
<强>结果强>
╔════════╦══════════╗
║ Name ║ Ref_Name ║
╠════════╬══════════╣
║ Joe ║ NULL ║
║ Sally ║ NULL ║
║ Steve ║ Sally ║
║ James ║ Joe ║
║ George ║ Sally ║
╚════════╩══════════╝