为SQL查询中的特定列返回null而不是空行

时间:2011-07-16 23:01:18

标签: sql select null db2

我们有一个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)。

请有人帮忙吗?

谢谢, 翼

2 个答案:

答案 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