SQL Server根据第一条记录的列值选择其他记录

时间:2014-05-02 23:56:37

标签: sql sql-server sql-server-2008

我正在寻找一个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

有人可以建议解决方案吗?

提前感谢您的帮助。

1 个答案:

答案 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    ║
╚════════╩══════════╝