1

注文テーブルがあり、次のUSER_IDようORDER_DATE
なことを達成したい:

SELECT [USER_ID], [FIRST_ORDER_DATE], [SECOND_ORDER_DATE], 
       [THIRD_ORDER_DATE], [FOURTH_ORDER_DATE]
FROM ORDERS 

getFirstOrderスカラー関数 ( 、 、 ...)を作成しようとしましたgetSecondOrderが、3 回目以降は非常に遅くなります

何か案は?

ありがとう!

4

1 に答える 1

3

このようなもの:

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 です。

于 2012-09-19T13:04:30.257 に答える