SQL如何翻译多列?

SQL如何翻译多列?,sql,Sql,假设我有一个表a作为“字典”: A type code name 1 a x 1 b y 2 a z 2 b t 我想将下表B翻译为名称: B c1 c2 a a a b b b 其中,B.c1是A.type=1的代码,B.c2是A.type=2的代码 预期的结果是 x z x t

假设我有一个表a作为“字典”:

A   type   code    name
    1      a       x
    1      b       y
    2      a       z
    2      b       t
我想将下表B翻译为名称:

B   c1     c2
    a      a
    a      b
    b      b
其中,B.c1是A.type=1的代码,B.c2是A.type=2的代码

预期的结果是

x    z
x    t
y    t
如果B中只有一列需要翻译,这很容易

SELECT A.name
 FROM  A, B
WHERE  A.type = 1
  AND  B.c1=A.code
使用连接

select a1.type,b.c1,a2.type,b.c2 from b
left outer join a as a1 on b.c1= a1.code and a1.type=1
left outer join a as a2 on b.c2= a2.code and a2.type=2
使用连接

select a1.type,b.c1,a2.type,b.c2 from b
left outer join a as a1 on b.c1= a1.code and a1.type=1
left outer join a as a2 on b.c2= a2.code and a2.type=2

很难理解你的想法是什么。你知道“pivot”的概念吗?@JacekCz不知道。我对sql绝对是新手。你能发布一个示例数据并预期结果吗?今天的提示:切换到现代的显式
JOIN
语法!更容易写(没有错误),更容易阅读和维护,更容易转换为外部连接(如果需要的话)!很难理解你的想法是什么。你知道“pivot”的概念吗?@JacekCz不知道。我对sql绝对是新手。你能发布一个示例数据并预期结果吗?今天的提示:切换到现代的显式
JOIN
语法!更容易写(没有错误),更容易阅读和维护,更容易转换为外部连接(如果需要的话)!使用联接,而不是联接语句。使用联接,而不是联接语句。