2016-03-24 2 views
-2

Я создал определенный пользователем тип таблицы в DB2 следующим образом:Как использовать определенный пользователем тип таблицы в DB2 с предложением?

create table fullname as (street varchar(100), addr varchar(100)) 

Я хочу знать, как использовать его в предложении WITH в основном добавить столбцы к югу таблицы к этому UDTT. Раздел WITH выглядит следующим образом:

WITH result (one, fullname) as 
(
    select one, two, three from info 
    UNION ALL 
    select one, two three from other_info 
) 

Хочу группы столбцов два и три вместе, как один столбец, представленный типа FullName таблицы. Это возможно - и как это делается ???

EDIT: Предположим, что две таблицы определены ниже

info(one varchar(50), two varchar(50), three varchar(50))

other_info(one varchar(50), two varchar(50), three varchar(50))

Таким образом, пункт WITH бы создать таблицу, которая является объединением как информации и other_info таблицы и это созданная таблица будет иметь схему

result (one varchar(50), fullname)

где fullname - это тип таблицы, определяемый пользователем, который содержит два атрибута столбца two и three от объединения, как один столбец.

Так, если таблица info содержала:

('Man', 'Peter', 'Griffin')

и таблицу other_info Содержится:

('Baby', 'Stewie', 'Griffin')

то положение WITH приведет к таблице

('Baby', ('Stewie', 'Griffin')) ('Man', ('Peter', 'Griffin'))

+1

Не могли бы вы описать более подробно то, что желаемый результат должен выглядеть? Вы говорите о концепциях, которые хотите использовать, но которые могут вообще не нужны. –

+0

И добавьте пример данных таблицы и ожидаемый результат! – jarlh

ответ

0

Используя следующий SQL скрипт, v10.5 DB2 - Linux:

connect to pocdb; 

drop table stack.with_test_1; 
drop table stack.with_test_2; 
drop table stack.with_test_results; 

create table stack.with_test_1 (
    one varchar(50), 
    two varchar(50), 
    three varchar(50) 
); 


create table stack.with_test_2 (
    one varchar(50), 
    two varchar(50), 
    three varchar(50) 
); 

create table stack.with_test_results (
    one varchar(50), 
    fullname varchar(100) 
); 

insert into stack.with_test_1 values ('x','fn1','ln1'); 
insert into stack.with_test_1 values ('x','fn2','ln2'); 
insert into stack.with_test_1 values ('x','fn3','ln3'); 
insert into stack.with_test_2 values ('y','fn4','ln4'); 
insert into stack.with_test_2 values ('y','fn5','ln5'); 
insert into stack.with_test_2 values ('y','fn6','ln6'); 

insert into stack.with_test_results 
with union_test as (
    select one, two, three from stack.with_test_1 
    union all 
    select one, two, three from stack.with_test_2 
) 
select 
    one, 
    two || ' ' || three as full_name 
from 
    union_test 
; 

select * from stack.with_test_results order by one; 

connect reset; 
terminate; 

Урожайность эти результаты:

connect to pocdb 

    Database Connection Information 

Database server  = DB2/LINUXX8664 10.5.3 
SQL authorization ID = DB2INST1 
Local database alias = POCDB 


drop table stack.with_test_1 
DB20000I The SQL command completed successfully. 

drop table stack.with_test_2 
DB20000I The SQL command completed successfully. 

drop table stack.with_test_results 
DB20000I The SQL command completed successfully. 

create table stack.with_test_1 (one varchar(50), two varchar(50), three varchar(50)) 
DB20000I The SQL command completed successfully. 

create table stack.with_test_2 (one varchar(50), two varchar(50), three varchar(50)) 
DB20000I The SQL command completed successfully. 

create table stack.with_test_results (one varchar(50), fullname varchar(100)) 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_1 values ('x','fn1','ln1') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_1 values ('x','fn2','ln2') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_1 values ('x','fn3','ln3') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_2 values ('y','fn4','ln4') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_2 values ('y','fn5','ln5') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_2 values ('y','fn6','ln6') 
DB20000I The SQL command completed successfully. 

insert into stack.with_test_results with union_test as (select one, two, three from stack.with_test_1 union all select one, two, three from stack.with_test_2) select one, two || ' ' || three as full_name from union_test 
DB20000I The SQL command completed successfully.  
select * from stack.with_test_results order by one   

ONE            FULLNAME     

-------------------------------------------------- ------------------------- 
--------------------------------------------------------------------------- 
x             fn1 ln1     

x             fn2 ln2     

x             fn3 ln3     

y             fn4 ln4     
y             fn5 ln5     
y             fn6 ln6     

    6 record(s) selected. 


connect reset 
DB20000I The SQL command completed successfully. 

terminate 
DB20000I The TERMINATE command completed successfully.