【发布时间】:2011-03-13 22:23:12
【问题描述】:
我正在尝试创建一个 Teradata SQL 查询,该查询将返回每个用户的第 n 个按时间顺序访问的日期。例如,
user | visit_date
---------------------
a 1/1
b 1/10
c 1/20
a 1/3
a 1/4
b 1/5
c 1/15
b 1/9
> magic_query_for_Second_visit;
user | second
------------------
a 1/3
b 1/9
c 1/20
我尝试了类似下面的方法,但 Teradata 尖叫“WHERE 子句中不允许使用有序分析函数。”我已经拉了一段时间的头发,但没有取得太大进展。有人看过吗?
select user,
row_number() over (partition by user order by visit_date desc) as rnum
from visitstable
where rnum = 2
如果我排除 where,那么我的结果看起来很有希望......我只是无法提取我需要的东西!
user | visit_date | rnum
---------------------------
a 1/1 1
a 1/3 2
a 1/4 3
b 1/5 1
b 1/9 2
b 1/10 3
c 1/15 1
c 1/20 2
提前感谢您的帮助!
【问题讨论】: