如何在Oracle的SQL查询中使用子查询返回的表
我需要一张像这样的桌子如何在Oracle的SQL查询中使用子查询返回的表,sql,database,oracle,oracle11g,Sql,Database,Oracle,Oracle11g,我需要一张像这样的桌子 +--------+----------+-----------------+--------------------+-------------------+ |offer_id|Offer_name|Total_offers_sold|total_device_changed|total_offer_changed| +--------+----------+-----------------+--------------------+----------------
+--------+----------+-----------------+--------------------+-------------------+
|offer_id|Offer_name|Total_offers_sold|total_device_changed|total_offer_changed|
+--------+----------+-----------------+--------------------+-------------------+
现在,对于前三列,我已经使用联接找到了数据,然后根据提供ID进行分组
+--------+----------+-----------------+
|offer_id|Offer_name|Total_offers_sold|
+--------+----------+-----------------+
|12 |abc |23 |
+--------+----------+-----------------+
|23 |gdf |3 |
+--------+----------+-----------------+
|54 |df |54 |
+--------+----------+-----------------+
|56 |gf |4 |
+--------+----------+-----------------+
|65 |ad |17 |
+--------+----------+-----------------+
|75 |hg |54 |
+--------+----------+-----------------+
对于其他两列,即offer_changed和total_device_changed,它们本身就是查找所需数据的复杂查询。假设我通过对这两个集群执行查询找到了这个示例数据
+--------+-------------------+
|offer_id|total_offer_changed|
+--------+-------------------+
|12 |3 |
+--------+-------------------+
|56 |65 |
+--------+-------------------+
|65 |4 |
+--------+-------------------+
同样地
+--------+--------------------+
|offer_id|total_device_changed|
+--------+--------------------+
|12 |2 |
+--------+--------------------+
|23 |5 |
+--------+--------------------+
|75 |20 |
+--------+--------------------+
现在的问题是,这些是临时结果,我无法理解如何将此输出(表)的结果合并到与其报价ID相对应的更大查询中。即,我需要的最终结果是:
+--------+----------+-----------------+--------------------+-------------------+
|offer_id|Offer_name|Total_offers_sold|total_device_changed|total_offer_changed|
+--------+----------+-----------------+--------------------+-------------------+
|12 |abc |23 |2 |3 |
+--------+----------+-----------------+--------------------+-------------------+
|23 |gdf |3 |5 | |
+--------+----------+-----------------+--------------------+-------------------+
|54 |df |54 | | |
+--------+----------+-----------------+--------------------+-------------------+
|56 |gf |4 | |65 |
+--------+----------+-----------------+--------------------+-------------------+
|65 |ad |17 | |04 |
+--------+----------+-----------------+--------------------+-------------------+
|75 |hg |54 |20 | |
+--------+----------+-----------------+--------------------+-------------------+
请帮助您要查找的是内联视图。内联视图是
from
子句中的子查询。与select
和where
子句中的子查询不同,您不能引用from
子句中的其他表,但可以将内联查询的结果与主查询中的表关联起来
在您的情况下,它将是:
select offer_id, offer_name, total_offers_sold
from table_name t1
inner join (select offer_id, total_offer_changed
from table_name
where whatever...
) t2
on t1.offer_id = t2.offer_id
where whatever_the_other_conditions
;
但是,在现实世界中,我只是想做一些类似的事情
select offer_id, offer_name, total_offers_sold, total_offer_changed
from table_name
where whatever_the_conditions
;
阅读和上的内联视图的更多信息。尝试以下查询:
SELECT
t1.OFFER_ID,t1.OFFER_NAME,t1.TOTAL_OFFERS_SOLD,
t3.TOTAL_DEVICE_CHANGED,t2.TOTAL_OFFER_CHANGED
FROM
TABLE1 t1
LEFT OUTER JOIN TABLE2 t2 ON t1.OFFER_ID = t2.OFFER_ID
LEFT OUTER JOIN TABLE3 t3 ON t1.OFFER_ID = t3.OFFER_ID
ORDER BY t1.OFFER_ID;
是否要将最终表作为查询中的输出?是!我想要最后一个表作为查询