2011-07-16 40 views
0

我們有一個表,它實際上是一個2D數組,其中每個(Row,Column)表示特定的一段數據,例如(1,4)可能表示位置和(2,4)可能代表披薩的價格。在SQL查詢中爲特定列返回null而不是空行

對於某個特定的人員,他們每個(行,列)只有一個條目。 有時這些數據可能需要翻譯,例如,位置可能存儲爲倫敦的L,曼徹斯特的M。然後,我們有一個名爲「位置映射」的單獨表格,它將L轉換成倫敦,M轉換成曼徹斯特。 有時我們不需要任何翻譯,例如價格可以按原樣返回。

實際上,我所希望做的是找到一些SQL這個二維數組轉換成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 

現在,如果L不中LocationTranslation表中存在,我還是想返回該行,但與下只是一個空值(或空)位置列。

請任何人都可以幫忙嗎?

感謝, 永

+0

什麼是查詢當前的嘗試? – Bohemian

+0

@Bohemian - 我的當前的嘗試: 選擇c.Location爲 「地點」,b.C2從數據表 'PriceOfPizza' 一,數據表B,LocationTranslationÇ 其中a.RowNo = 'R1' 和c.RawLocation = a.C1 和b.RowNo ='R2' 只要位置轉換表中存在原始位置(「L」),就可以。否則,它將返回空行。 – WingChanNo7

回答

0

我有DB2的認識非常有限,但我相信下面的應該工作,幾乎所有的關係數據庫管理系統

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' 
+0

太棒了,所以當我需要進行翻譯時,我不需要再進行查找和左連接,所以我使用Inner Join; – WingChanNo7

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