【问题标题】:Oracle SQL - Creating A Temporary Table Then Union To That TableOracle SQL - 创建一个临时表然后联合到该表
【发布时间】:2014-04-28 11:49:37
【问题描述】:

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

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

 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 来查找该 tran_nbr 下仅使用 cntr_nbr 的所有记录,还有其他记录使用 tran_nbr 但具有不同的 cntr_nbrs。我从代码中得到的错误是 tmp2 不存在。

任何帮助将不胜感激:)

7 的

【问题讨论】:

  • 您的问题是什么?你有错误吗?如果是,是哪一个?你得到错误的数据吗?而且您的代码中没有create temporary table
  • 您能解释一下您打算让这段代码做什么吗?我怀疑有一种更简单的方法可以做你想做的事。
  • 抱歉,这肯定可以更清楚 - 我正在尝试使用 tran_nbr 来查找该 tran_nbr 下的所有记录,仅使用 cntr_nbr,还有其他记录使用 tran_nbr 但具有不同的 cntr_nbrs。我从代码中得到的错误是 tmp2 不存在。

标签: sql oracle temporary


【解决方案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'

【讨论】:

  • 感谢@Guneli,这很好用,由于某种原因,它会引发列号问题,但很容易排序,因为我正在定义要返回的列。谢谢!
猜你喜欢
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
相关资源
最近更新 更多