我们有一个Table,它实际上是一个2D数组,其中每个(Row,Column)代表一个特定的数据,例如(1,4)可能代表Location,(2,4)可能代表Pizza的价格
对于特定的人,他们每个人只有一个条目(行,列)。 有时这些数据可能需要翻译,例如,位置可能存储为伦敦的L和曼彻斯特的M.然后,我们有一个名为位置映射的单独表格,将L转换为伦敦,M转换为曼彻斯特。 有时我们不需要任何翻译,例如价格可以按原样返回。
实际上,我希望做的是找到一些SQL将这个2D数组转换为1行输出:
原始表:
RowNo | C1 | C2
------+----+-----
R1 | L | 2.0
R2 | 50 | J
所以:
(1,1) represent location,
(1,2) represents price of pizza
(2,1) represnts age
(2,2) represents Initials
只需要翻译位置。
我想要的是回来:
Location | PriceOfPizza | Age | Initials
---------+--------------+-----+---------
London | 2.0 | 50 | J
现在,如果LocationTranslation表中不存在L,我仍然想要返回行,但在Location列下只有一个空值(或null)。
请有人帮忙吗?
谢谢, 翼
答案 0 :(得分:0)
我对DB2的知识非常有限,但我相信以下几乎适用于所有RDMS
select
c.Location as "Location",
b.C2 as 'PriceOfPizza'
FROM from DataTable a
INNER JOIN DataTable b ON (b.RowNo = 'R2')
LEFT JOIN LocationTranslation c ON (c.RawLocation = a.C1)
WHERE a.RowNo = 'R1'
答案 1 :(得分:0)
select c.Location as "Location", b.C2 as 'PriceOfPizza'
from DataTable a
inner join DataTable b on a.RowNo = 'R1' and b.RowNo = 'R2'
left outer join LocationTranslation c on a.RowNo = 'R1' and c.RawLocation = a.C1