我如何在DB2中连接,以便我的select查询返回我需要进行的插入

时间:2017-06-13 17:15:21

标签: db2 db2-400

我有一个选择,它提供了我需要查找的数据 在分析之后,我需要将该数据插入到另一个表中,以便我可以再次执行该过程

SELECT distinct 'insert into ftdata values ( '& char(39) & user, partner, '', timedt, datetm,'',0,0 ')'
FROM ttab
JOIN
ttab2
on user2=user
where timedt>= '20170611'
and (statusdue='now');

我也试过

SELECT distinct CONCAT('insert into ftdata values (' user, partner, '', timedt, datetm,'',0,0 ')')

这假设为所有找到的记录返回

insert into ftdata values (user, partner, '', timedt, datetm, '', 0, 0)
insert into ftdata values (user, partner, '', timedt, datetm, '', 0, 0)
insert into ftdata values (user, partner, '', timedt, datetm, '', 0, 0)
insert into ftdata values (user, partner, '', timedt, datetm, '', 0, 0)
insert into ftdata values (user, partner, '', timedt, datetm, '', 0, 0)

我尝试使用'&'来查询我的查询中显示的内容并尝试了'+'

2 个答案:

答案 0 :(得分:0)

Concat with double pipe || :  'insert into ftdata values (' || user || partner || ...

答案 1 :(得分:0)

concat的多种方法(取决于解释器SQL):

1) select concat(zone1, zone2, 'test', zone3, ..., zoneN) from yourtable
2) select zone1 concat zone2 concat  'test' concat  zone3 concat  ... concat zoneN) from yourtable
3) select zone1 || zone2 || 'test' || zone3 || ... || zoneN) from yourtable

如果你想动态建立一个包含数据表的查询,别忘了为insert char或varchar type column添加双引号

要小心日期或时间戳类型:do || '''' || cast(zonedateortimestamp as varchar(35))|| '''' ||

试试这个:

SELECT distinct 'insert into ftdata values ( ''' || user || ''', ''' || partner || ''', ''' || timedt || ''', ''' || datetm || ''', '''', 0, 0 )'
FROM ttab inner join ttab2 on user2=user
where timedt>= '20170611' and statusdue='now';