2016-02-16 5 views
1

В Apache Derby, я порождающий некоторые значения, используя эту инструкцию:Дайте имя столбца значений строк

select * from (
    select 10 as DISTANCE_KM from SYSIBM.SYSDUMMY1 union 
    select 15 as DISTANCE_KM from SYSIBM.SYSDUMMY1 union 
    select 18 as DISTANCE_KM from SYSIBM.SYSDUMMY1 union 
    select 21 as DISTANCE_KM from SYSIBM.SYSDUMMY1 union 
    select 25 
) as DISTANCE 

который возвращает:

|DISTANCE_KM| 
|-----------| 
|10   | 
|15   | 
|18   | 
|21   | 
|25   | 

Существует более краткий способ для получения аналогичных результатов :

select * from (values 10, 15, 18, 21, 25) as DISTANCE 

, которая возвращает:

|1   | <---- I'd like this column to be called DISTANCE_KM 
|-----------| 
|10   | 
|15   | 
|18   | 
|21   | 
|25   | 

Есть ли способ для псевдонима возвращенной колонки как DISTANCE_KM? Это то, что я пробовал, но это не помогло:

select "1" as DISTANCE_KM from (values 10, 15, 18, 21, 25) as DISTANCE 

p.s. Мне не разрешено изменять схему - поэтому я не могу хранить значения в своей таблице.

+0

Вы можете попробовать это: 'выбрать * из (значения 10, 15, 18, 21, 25) как DISTANCE (DISTANCE_KM) 'или' select * from (значения 10 AS DISTANCE_KM, 15, 18, 21, 25) как DISTANCE'? –

+0

Как насчет 'select * from (значения 10, 15, 18, 21, 25) как DISTANCE (DISTANCE_KM)'? – GarethD

+1

Вы должны использовать стандартный синтаксис SQL для значений «значения» (10), (15), (18), (21), (25) ». Я удивлен, что Derby принимает значения 10, 15, 18, 21, 25' –

ответ

1

Я не db2 на руке, но это может работать:

select * 
from (values 10, 15, 18, 21, 25) as DISTANCE(DISTANCE_KM); 

Если нет, то это будет работать:

with distance(DISTANCE_KM) as (
     select * 
     from (values 10, 15, 18, 21, 25) as DISTANCE 
    ) 
. . . 
+0

Apache Derby не поддерживает общие табличные выражения, но первое решение будет работать. –

+0

Большой ответ Гордон. Первое решение работает отлично – Fidel

Смежные вопросы