您只需使用单独的连接引用查找表两次,即可检索 2 个值。下面的示例向您展示了如何做到这一点,并且链接上有一个可运行的演示:
-- setup demo schema with data
create table TableA
(
request_id int,
[type] nvarchar(10),
[business_line] nvarchar(10)
);
create table TableB
(
id int,
[code] nvarchar(10),
[name] nvarchar(10)
);
INSERT INTO TableA
([request_id], [type], [business_line])
VALUES
(1, 'T1', 'BL1'),
(2, 'T1', 'BL2'),
(3, 'T2', 'BL3'),
(4, 'T1', 'BL1')
;
INSERT INTO TableB
(id, [code], [name])
VALUES
(19, 'BL1', 'SCI'),
(20, 'BL2', 'PCI'),
(67, 'T1', 'Product'),
(68, 'T2', 'Substance')
;
查询
select A.request_id, A.[type], A.[business_line],
Btype.[name] as Type_Name,
BName.[name] as Business_Name
from TableA A
inner join TableB BType on A.[type] = BType.[code]
inner join TableB BName on A.[business_line] = BName.[code];
产生:(注意第 3 行在您的示例数据中没有匹配的查找
| request_id | type | business_line | Type_Name | Business_Name |
| ---------- | ---- | ------------- | --------- | ------------- |
| 1 | T1 | BL1 | Product | SCI |
| 2 | T1 | BL2 | Product | PCI |
| 4 | T1 | BL1 | Product | SCI |
如果您的行没有查找值,您可以修改查询连接,这样就不会像第 3 行那样排除行。
View on DB Fiddle