2016-07-25 5 views
0

У меня есть строка, которую нужно сравнить с существующими данными в PL SQL. Каждая введенная информация сравнивается с существующими данными с помощью процедуры. (PL/SQL) Если величина введенных данных отрицательна по сравнению с существующими данными, а все остальные столбцы одинаковы, ее следует игнорировать. Если подобные данные снова появятся, они должны быть зафиксированы в сообщении об ошибке.PL SQL строка за строкой сравнение с существующими данными и значения accept/ignore

   col1 col2  col3 col4 output 
existing data abcd xyz  ijk  100  
entered data abcd xyz  ijk -100 ignored 
entered data abcd xyz  ijk -100 to be captured in a error 

Любые советы были бы высоко оценены.

+0

Не могли бы вы поделиться своим кодом процедуры? – Pirate

+0

@ Пират: спасибо за ваше внимание. Процедура включает в себя дебетовые/кредитные авизо и поэтому не следует предоставлять общий доступ. Мне просто нужна логика с подзапросом для выполнения вышеупомянутого сценария. Первоначальная линия получила: DM1 ----- 10 PKGS 100 $ \t Возврат представлены: DM 2 ---- \t - -10 PKGS -100 $ игнорировали \t Line представлены: DM 3 ---- \t - - 10 PKGS 100 $ error Спасибо! –

+0

Какой подзаголовок? Похоже, вы хотите присоединиться к двум наборам данных и сравнить значения. –

ответ

0

Мое понимание таково:

  • вы ввод четырех кусков информации, col1, col2, col3, COL4
  • Cols 1-3 строки
  • COL4 ряд ​​(случается валюта)

для отдельного ряда данных, имеют следующую логику для запуска на столе (назовем его SAMPLE_DATA)

  • если смещ_по_столбцы 1-3 не совпадают Cols 1-3 в SAMPLE_DATA = достоверных данные
  • если смещ_по_столбцы 1-3 матч, но COL4 не = действительные данные
  • если смещ_по_столбцы 1-3 матча и COL4 матчей но равный и противоположный = игнорировало
  • если ошибка смещ_по_столбцев 1-3 матча и COL4 матчей =

Так что ваша задача проста -

  • со ЕНТ все строки, которые соответствуют смещ_по_столбцам 1-4 (А)
  • считать COLS, которые соответствуют Cols 1-3, а также (COL4 * -1) (B)

Полученная логика

IF A = 0 AND B = 0 = valid 
IF A > 0 AND B = 1 = ignore 
IF A > 0 AND B > 1 = error 

Это все довольно легко кодировать - я пропустил точку?

+0

Спасибо за вашу помощь !. Полагаю, вы поняли это неправильно.Как объяснялось в моем вопросе, col1 col2 col3 COL4 Первоначальная линия: \t ABCD 123 10 pkgs Возвращение submitted1: \t ABCD 123 -10 pkgs \t -100 Возврат submitted2: ABCD 123 -10 pkgs В ответ представляется 1 - все данные столбцов похожи на начальную строку с отрицательным знаком. это можно игнорировать, без ошибок. В обратной передаче2, снова та же линия с аналогичными данными с разной величиной. Дублировать 1-ю и 2-ю строки. ошибка. Надеюсь, он уточнит. –

+0

Боюсь, вы не помогаете мне помочь. Мой второй набор пулевых точек - это сводка логики, которую, я думаю, вы пытаетесь применить. Какие из них неверны и почему? Если вы можете ответить на этот вопрос, возможно, мы сможем переместить –

+0

, здесь вы переходите с пересмотренным требованием. Сценарий № 1 \t \t \t \t \t \t \t \t \t Submittor | S Договор | S BU | s Prod | s Счет | S Inv Дата | S Единицы | S прод Цена | s Ошибка | S Комментарии A123456 | ю A10001 | s 10001 | s 1001 | s 100101 | s \t 08/25/2016 | S 4 \t | s 100 $ | s Нет Дублированный \t A123456 \t | S A10001 | s 10001 | s 1001 | s 100101 | s \t 08/25/2016 | s -4 | s 100 $ | s Когда единицы -ve меньше или равны исходным единицам, тогда нет ошибки –