好吧,我已经在每一处都搜索了这个,但无法获得解决方案。Inception在SQL中使用LAG()
所以我有这样的一个表:
member_id public_id
a1 NULL
a1 123
a1 345
a2 612
而且我想添加一个新列,命名为conv
。这是用这个规则填充数字:
IF PREVIOUSROW(member_id) <> member_id THEN 1
ELSE IF PREVIOUSROW(member_id) = member_id AND PREVIOUSROW(public_id) = NULL
THEN PREVIOUSROW(THIS_COLUMN) + 1 <-- here is the inception
ELSE 1
我知道如何访问上一行,我可以使用LAG()
。但是,如何访问THAT列中的前一行,该列中也使用了LAG()
。
这是我的目标:
member_id public_id conv
a1 NULL 1
a1 NULL 2
a1 NULL 3
a1 123 4
a1 345 1
a2 612 1
谢谢您的帮助!
所以,我用您的解决方案后,我得到这样的:
member_id public_id conv
a1 NULL 1
a1 NULL 2
a1 NULL 2
a1 123 2
a1 345 1
a2 612 1
这是因为该解决方案是conv+1
和conv
是1,所以最大数量将永远2
您正在使用哪个数据库管理系统? –
@a_horse_with_no_name Impala – mthbnd