Возврат пустого значения вместо пустых строк для определенного столбца в запросе SQL - PullRequest
1 голос
/ 17 июля 2011

У нас есть таблица, которая на самом деле является двумерным массивом, где каждый (строка, столбец) представляет определенный фрагмент данных, например (1,4) может представлять местоположение, а (2,4) может представлять цену пиццы .

Для конкретного человека у них будет ровно одна запись для каждого (строка, столбец). Иногда эти данные могут нуждаться в переводе, например, Местоположение может храниться как L для Лондона и M для Манчестера. Затем у нас есть отдельная таблица с именем Location mapping, которая переводит L в Лондон и M в Манчестер. Иногда нам не нужен перевод, например, цена может быть возвращена как есть.

По сути, я надеюсь найти SQL для преобразования этого 2D-массива в вывод из одной строки:

Оригинальный стол:

 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, я все еще хочу вернуть строку, но с пустым значением (или нулем) в столбце Location.

Пожалуйста, кто-нибудь может помочь?

Спасибо, Крыло

Ответы [ 2 ]

0 голосов
/ 17 июля 2011
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
0 голосов
/ 17 июля 2011

У меня очень ограниченные знания 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' 
...