好吧,我已經在每一處都搜索了這個,但無法獲得解決方案。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