IF 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
由于security_no,asofdate和abs_qty列与第2行的值完全相同,因此第一行的值应为1。
第二行应该具有值1,因为security_no,asofdate和abs_qty列下的值与第1行的值完全相同。
由于security_no,asofdate和abs_qty列下的值与表中的任何其他行都不相同,因此第三行的值应为0。
第四行应为0,因为security_no,asofdate和abs_qty列下的值与表中的任何其他行都不相同。
答案 0 :(得分:1)
我认为您可以使用窗口功能来完成您想做的事情:
select t.*,
(case when count(*) over (partition by security_no, asofdate, abs_qty) > 1
then 1 else 0
end) as new_column
from t;