ЕСЛИ account_no> «10000000» и offset_account = «6XXX» ТОГДА Если значение столбцов --- (security_no AND asofdate AND abs (qty)) снова встречается в таблице ТОГДА (1) ИНАЧЕ (0).
sub_no account_no rep security_no symbol asofdate abs_qty new_column
177 12345 X 2000 A 20180101 100 1
177 23456 Y 2000 A 20180101 100 1
177 34567 Z 5000 A 20180101 300 0
177 45455 Z 5000 A 20170909 300 0
Первая строка должна иметь значение 1, поскольку значения в столбцах security_no, asofdate и abs_qty точно такие же, как и в строке 2.
Вторая строка должна иметь значение 1, поскольку значения в столбцах security_no, asofdate и abs_qty точно такие же, как и в строке 1.
Третья строка должна иметь значение 0, поскольку значения в столбцах security_no, asofdate и abs_qty не совпадают с любыми другими строками в таблице.
Четвертая строка должна иметь значение 0, поскольку значения в столбцах security_no, asofdate и abs_qty не совпадают с любыми другими строками в таблице.
Я думаю, вы можете делать то, что хотите, используя оконные функции:
select t.*,
(case when count(*) over (partition by security_no, asofdate, abs_qty) > 1
then 1 else 0
end) as new_column
from t;
Спасибо, Гордон. Это решение работает как шарм.
В таблице не существует такой вещи, как «первая строка» или «вторая строка». Таблицы SQL представляют наборы неупорядоченный. Укажите, какой столбец или комбинации столбцов используются для определения порядка.