如何创建新列并能够自引用其前一行的值以创建当前行的值

时间:2019-05-02 22:21:28

标签: sql sql-server

我有一个表,要在其中基于表中的另一列创建指标。

在表格中,每次访问都可以有多次点击,并且每次点击都具有与之相关的页面。

我试图实现的是这个新指标a_ind可以告诉我这次访问是否出现过某个页面(是在当前页面还是在以前的页面中)。

我知道在引用另一列的当前行时如何使用案例(见下文)。

我只是不知道如何自我引用正在创建的新列的上一行。

'tbc'是我被困住的地方

select 
visit, click, page,        
case when click = 1 then
     case when page = 'a' then 1 else null end
else
     case when page = 'a' then 1 else 'tbc' end
end a_ind
from my_table

因此,我想基于点击和页面创建此a_ind。最终结果应如下所示

<< em> edit >我添加了新列“行”以更好地说明这一点。

我希望逻辑为:对于单击<> 1和页面<>'a'的第 i 行,'a_ind'等于中的'a_ind'的值(i-1)第一行。所以我所说的自我指称本身(抱歉,不够清楚)

因此,假设第5,6行的访问='b','a_ind'= 0,第8行的'a_ind'= 1。

row     visit   click   page    a_ind
1       a       1       a       1
2       a       2       b       1
3       a       3       c       1
4       b       1       b       0
5       b       2       c       0
6       b       3       d       0
7       b       4       a       1
8       b       5       e       1
9       c       1       c       0
10      c       2       d       0

0 个答案:

没有答案