Sql 我如何给日期排名?
我有一个带有Sql 我如何给日期排名?,sql,ranking,rank,Sql,Ranking,Rank,我有一个带有用户ID和订单日期的订单表 我想实现这样的目标: SELECT [USER_ID], [FIRST_ORDER_DATE], [SECOND_ORDER_DATE], [THIRD_ORDER_DATE], [FOURTH_ORDER_DATE] FROM ORDERS 我试图创建一个标量函数(getFirstOrder,getSecondOrder,…) 但在第三次之后,速度非常慢 有什么想法吗 谢谢 类似这样: select user_id,
用户ID
和订单日期的订单表
我想实现这样的目标:
SELECT [USER_ID], [FIRST_ORDER_DATE], [SECOND_ORDER_DATE],
[THIRD_ORDER_DATE], [FOURTH_ORDER_DATE]
FROM ORDERS
我试图创建一个标量函数(getFirstOrder
,getSecondOrder
,…)
但在第三次之后,速度非常慢
有什么想法吗
谢谢 类似这样:
select user_id,
max(case when rnk = 1 then date_col else null end) as first_order_date,
max(case when rnk = 2 then date_col else null end) as second_order_date,
max(case when rnk = 3 then date_col else null end) as third_order_date
from (
select user_id,
date_col,
dense_rank() over (partition by user_id order by date_col) as rnk
from orders
) t
group by user_id;
您没有指定您的DBMS。以上是适用于大多数现代DBMS的ANSI SQL。这可能会有所帮助: