我使用的是Oracle 10。 我要在一行中连接两个sql查询的结果。
第一个查询是:
SELECT DISTINCT F.comments from flight F, task WHERE F.id = task.flight_id and task.name like 'BO%' AND F.comments IS NOT NULL
返回:
初步评论。
第二个查询(它将结果汇总到一行查询中):
SELECT (RTRIM(XMLAGG(xmlelement(X, T.comments||',')order by F.id).extract('//text()'),',')) list from flight F, task T where F.id = T.flight_id and T.name like 'BOS%' AND T.comments IS NOT NULL
返回:
第一条评论,第二条评论,第三条评论。
我必须将结果连成一行,所以我做了:
SELECT DISTINCT F.comments from flight F, task WHERE F.id = task.flight_id and task.name like 'BO%' AND F.comments IS NOT NULL
UNION ALL
SELECT (RTRIM(XMLAGG(xmlelement(X, T.comments||',')order by F.id).extract('//text()'),',')) list from flight F, task T where F.id = T.flight_id and T.name like 'BOS%' AND T.comments IS NOT NULL
这会给我两行。第一个关于第一个查询的结果,第二个关于第二个查询。
我想在一行中检索它们,如:
初步评论。第一评论。,第二评论。,第三评论。
谢谢!
答案 0 :(得分:0)
以正确的顺序将两个查询推送到单个子查询中,然后将xmlagg应用于顶部。类似的东西:
SELECT (RTRIM(XMLAGG(xmlelement(X, comments||',')order by sortorder, F.id).extract('//text()'),',')) list
from (
SELECT DISTINCT 1 sortorder,
f.id,
F.comments
from flight F, task
WHERE F.id = task.flight_id
and task.name like 'BO%'
AND F.comments IS NOT NULL
union all
SELECT 2, f.id, T.comments
from flight F, task T
where F.id = T.flight_id
and T.name like 'BOS%'
AND T.comments IS NOT NULL )
(请原谅任何轻微的语法错误 - 我现在离开了我的数据库)