首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定“活动”记录

确定“活动”记录
EN

Stack Overflow用户
提问于 2017-05-08 17:09:35
回答 2查看 37关注 0票数 0

我有一个客户列表,它可以列出单个或多个服务。在随时间变化的表中,有一个“添加”或“删除”的指示符。我需要的是:确定当前活动的服务(如果有的话)。下面是一组样本数据:

代码语言:javascript
复制
CUST_ID SRV_ID  STATUS  ACTION_DATE
12345   102 Added   1/31/17 10:15
12345   189 Added   4/18/17 15:37
12345   189 Removed 4/21/17 14:08
12345   194 Added   5/2/17 14:43
12345   194 Removed 5/5/17 10:02
12345   194 Added   5/5/17 13:06
12345   69  Added   4/19/17 9:36
12345   69  Removed 5/2/17 14:43
12345   73  Added   4/20/17 10:21
12345   73  Removed 4/25/17 11:20
12345   95  Added   5/4/17 9:48
12345   95  Removed 5/4/17 10:05

有待交回的纪录: 102宗/31/17 10:15及194宗5/5/17 13:06

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-08 17:14:02

您可以使用cust_id和window函数row_number找到每个top 1 with ties和serv_id的最新行,然后过滤状态为“添加”的行:

代码语言:javascript
复制
select *
from (
    select top 1
    with ties *
    from your_table
    order by row_number() over (
            partition by cust_id, srv_id
            order by action_date desc
            )
    ) t
where status = 'Added'

生产:

代码语言:javascript
复制
CUST_ID SRV_ID  STATUS  ACTION_DATE
12345   102     Added   2017/01/31 10:15
12345   194     Added   2017/05/05 13:06

演示

票数 0
EN

Stack Overflow用户

发布于 2017-05-08 17:19:01

如下所示:

代码语言:javascript
复制
SELECT SRV_ID
FROM YourTable
GROUP BY SRV_ID
HAVING MAX(CASE WHEN STATUS='Added' THEN ACTION_DATE END)
     > MAX(CASE WHEN STATUS='Removed' THEN ACTION_DATE END)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43853477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档