【发布时间】:2015-02-04 14:58:39
【问题描述】:
我有一个活动的 cust_id 和时间戳列表。我想添加一个名为“activity_order”的列,它会给每个 cust_id 一个顺序,其中“1”被分配给最大时间戳
cust_id | time_stamp
________ __________
a1 2015-01-31 10:48:43
a1 2015-01-31 12:48:46
a1 2015-01-31 17:50:40
b1 2015-01-25 10:39:01
b1 2015-01-31 12:53:34
这就是我想要的结果:
cust_id | time_stamp | activity_order
________ ___________________ _________________
a1 2015-01-31 10:48:43 3
a1 2015-01-31 12:48:46 2
a1 2015-01-31 17:50:40 1
b1 2015-01-25 10:39:01 2
b1 2015-01-31 12:53:34 1
这是我的尝试,但问题是这个 CASE 语句只有这么大,我想我需要一个循环或类似的东西,以防 cust_id 有大于 2 个活动。
SELECT a.cust_id
,a.time_stamp
,CASE WHEN a.time_stamp = b.max_ts THEN 1 ELSE 2 END as activity_order
FROM ACTIVITY a
JOIN (SELECT
cust_id
,MAX(time_stamp) as max_ts
FROM activity_order) b
ON a.cust_id = b.cust_id
【问题讨论】: