SQL如何翻译多列?
假设我有一个表a作为“字典”: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 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
语法!更容易写(没有错误),更容易阅读和维护,更容易转换为外部连接(如果需要的话)!使用联接,而不是联接语句。使用联接,而不是联接语句。