2015-01-22 4 views
1

Я не могу найти решение этой проблемы.игнорировать столбец в выписке минус

Есть два стола, чтобы минус друг от друга.

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

мне нужны данные из tableA.columnC, однако он никогда не будет соответствовать к tableB.columnC, так что минус оператор возвратит обе записи.

Есть ли способ игнорировать columnC из инструкции минус, но все же вернуть результаты?

-Положения

P.S. Немного информации об этой проблеме. У меня есть таблица транзакций, в которой указывается дата покупки, выставленная сумма, приобретенный товар (иногда иногда, иногда нет), номер счета покупателя и уникальный идентификатор покупки.

В этой таблице хранятся как покупки, так и развороты. Так что, если кто-то купил предмет за 10,00, а затем вернет товар, для него будет -10.00. В некоторых случаях человек будет покупать, возвращать и покупать этот товар снова в тот же день. Эти данные получены от третьей стороны.

К сожалению, в этом случае сумма не работает. Мне нужна строчная деталь всех покупок, которые не были отменены.

Я был в состоянии получить правильные данные следуя сообщения советов и с помощью: Prevent Oracle minus statement from removing duplicates

Однако есть больше информации, что мне нужно из этой таблицы, чем просто информация, которую я использую, чтобы минус выключить возвращается.

Вот почему я хотел бы помочь с приведенным выше утверждением.

+1

Вы используете Oracle или MySQL? –

+0

Я использую оракул. – Mikeb530

ответ

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) 
+0

Позвольте мне попробовать это. – Mikeb530

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; 
+0

Это должно сработать, но это намного сложнее, чем использование 'WHERE EXISTS' –

+0

Проблема заключается в том, что в течение одного дня есть пять записей для одного элемента, то есть покупка, возврат, покупка, возврат, покупка. Если он в первом colA и colB в выписке минус, я не получу никаких записей. Если я создаю раздел над оператором, я не смогу извлечь достаточную информацию. Я думаю, что я могу сделать это с помощью хранимой процедуры, перейдя по позициям и отрицательным записям и идентифицируя совпадающие обратные. – Mikeb530

Смежные вопросы