Oracle SQL - 创建临时表然后联合到该表

时间:2014-04-28 11:49:38

标签: sql oracle temporary

我尝试运行查询并将查询结果存储在临时表中,然后将查询联合到将加入该表的第一个查询。

到目前为止我的代码看起来像这样 -

 SELECT * FROM
  (WITH tmp2 AS
  (SELECT *
  FROM prod_trkg_tran ptt
  WHERE ptt.menu_optn_name = 'RF Split/Comb {Carton}'
  AND ptt.cntr_nbr         = '0031195609'
  )
  SELECT * FROM prod_trkg_tran
  )
UNION
SELECT *
FROM prod_trkg_tran ttp
INNER JOIN tmp2 -- This doesn't work
ON ttp.tran_nbr          = tmp2.tran_nbr
WHERE ttp.menu_optn_name = 'RF Split/Comb {Carton}'
AND ttp.cntr_nbr        <> '0031195609'

很抱歉,肯定会更清楚 - 我尝试使用tran_nbr只使用cntr_nbr查找该tran_nbr下的所有记录,还有其他记录使用tran_nbr但具有不同的cntr_nbrs。我从代码中得到的错误是tmp2不存在。

非常感谢任何帮助:)

7&#39; S

1 个答案:

答案 0 :(得分:1)

试试这个:

WITH tmp2 AS
  (SELECT *
  FROM prod_trkg_tran ptt
  WHERE ptt.menu_optn_name = 'RF Split/Comb {Carton}'
  AND ptt.cntr_nbr         = '0031195609'
  )
SELECT * FROM tmp2
UNION
SELECT *
FROM prod_trkg_tran ttp
INNER JOIN tmp2
ON ttp.tran_nbr = tmp2.tran_nbr
WHERE ttp.menu_optn_name = 'RF Split/Comb {Carton}'
AND ttp.cntr_nbr        <> '0031195609'