4

以下の DDL を参照してください。

CREATE TABLE dbaddress
(aid integer identity not null, link_id int, link_type char, primary key (aid))
CREATE TABLE dbDoorSupervisor
(did integer identity not null, name varchar(30), primary key (did))
CREATE TABLE dbLicensee
(lid integer identity not null, name varchar(30), primary key (lid))

INSERT INTO dbDoorSupervisor (name) values ('Ian')
INSERT INTO dbLicensee (name) values ('Maria')
INSERT INTO dbaddress (link_id, link_type) values (1,'D')
INSERT INTO dbaddress (link_id, link_type) values (1,'L')

提供された Address.AID に応じて、ドア スーパーバイザーまたはライセンシーの名前を取得しようとしています。たとえば、援助 1 が WHERE 句で指定されている場合、Ian はドア スーパーバイザー テーブルから返されますが、援助 2 が WHERE 句で指定されている場合、Maria はライセンシー テーブルから返されます。

SELECT 句で CASE ステートメントを使用できることは知っていますが、提供された AID に応じて、FROM 句で使用できますか。

4

3 に答える 3

2
select a.linkd_id,
case when link_type = 'D' then d.name
    when link_type = 'L' then l.name
end as 'Name'
from dbAddress a
left join dbDoorSupervisor d on d.did = a.link_id
left join dbLicensee l on l.lid = a.link_id
于 2013-10-11T20:21:00.043 に答える