これを行うには2つの方法があり、一つはcase文であり、他方は、インラインテーブルです。私はインラインテーブルがより好きで、それはより速いです。他のテーブルと同様に結合し、UNION ALLを使用してテーブルを構築します。このように: - 同じこと、あなたがより多くの標準(SQL Serverの、DB2などの、オラクル、プログレス、など)DBを使用している場合は
SELECT t.dept, coalesce(type_translate.name, 'no name') as name
FROM team t
LEFT JOIN typetable ON typetable.id = t.team_id
LEFT JOIN (
SELECT '01' as lookup, 'type01' as name
UNION ALL
SELECT '02', 'type02'
UNION ALL
SELECT '03', 'type03'
UNION ALL
SELECT '04', 'type04'
UNION ALL
SELECT '05', 'type05'
UNION ALL
SELECT '06', 'type06'
UNION ALL
SELECT '06', 'type07'
) type_translate ON left(typetable.type,2) = type_translate.lookup
あなたはVALUESテーブルのコンストラクタの代わりに、UNION ALLを使用することができますしかし、より良い構文です。
SELECT t.dept, coalesce(type_translate.name, 'no name') as name
FROM team t
LEFT JOIN typetable ON typetable.id = t.team_id
LEFT JOIN (
VALUES
('01', 'type01'),
('02', 'type02'),
('03', 'type03'),
('04', 'type04'),
('05', 'type05'),
('06', 'type06'),
('07', 'type07')
) AS type_translate(lookup,name) ON left(typetable.type,2) = type_translate.lookup