忽略减去语句中的列

时间:2015-01-22 16:12:13

标签: sql oracle

我无法找到解决此问题的方法。

有两个表相互减去。

Select columnA, columnB, columnC from tableA
minus
Select columnA, columnB, columnC from tableB

我需要来自tableA.columnC的数据,但它永远不会与tableB.columnC匹配,因此minus语句将返回两个记录。

有没有办法从minus语句中忽略columnC但仍返回结果?

-Thanks

P.S。关于这个问题的一点背景。我有一个交易表,列出购买日期,开单金额,购买的项目(有时列出,有时没有),购买者的帐号,以及购买的唯一标识符。

此表同时包含购买和撤消。因此,如果有人为10.00购买了一件物品,然后返回该物品则为-10.00。在某些情况下,某人会在同一天内再次购买,退货和购买该商品。这些数据来自第三方。

不幸的是,在这种情况下,一笔金额不起作用我需要逐行详细记录所有未被撤消的购买。

通过以下帖子建议并使用以下内容,我能够获得正确的数据: Prevent Oracle minus statement from removing duplicates

然而,我需要从这个表中获得更多信息,而不仅仅是我用来减去回报的信息。

这就是为什么我想帮助上述陈述。

2 个答案:

答案 0 :(得分:2)

这些方面的内容应该有效:

Select columnA, columnB, columnC from tableA a
where not exists
(Select 1 from tableB b where a.columnA=b.columnA and a.columnB=b.columnB)

答案 1 :(得分:1)

试试这个:

select cola,colb,colc from tableA as A
inner join
(select cola,colb from tableA
 minus
 select cola,colb from tableB) as B
 on a.cola = b.cola
 and a.colb = b.colb;