sql - 仅包括事件顺序有效的分组观察

标签 sql sql-server

我有一张个人眼科检查和眼镜购买日期表。我只想保留人们在进行眼科检查后购买眼镜的情况。在下面的示例中,我想为人员 2、人员 3 保留人员 1、事件 2 和 3,但不为人员 4 保留。我如何在 SQL Server 中执行此操作?

| Person | Event  | Order |
|    1   |  Exam  |    1  |
|    1   | Eyewear|    2  | 
|    2   | Eyewear|    1  |
|    2   | Exam   |    2  | 
|    2   | Eyewear|    3  |
|    3   | Exam   |    1  | 
|    3   | Eyewear|    2  |
|    4   | Eyewear|    1  | 
|    4   | Exam   |    2  |

最终结果如下

| Person | Event  | Order |
|    1   |  Exam  |    1  |
|    1   | Eyewear|    2  | 
|    2   | Exam   |    2  | 
|    2   | Eyewear|    3  |
|    3   | Exam   |    1  | 
|    3   | Eyewear|    2  |

最佳答案

自加入应该可以...

select
    t.Person
    ,t.Event
    ,t.[Order]
from
    yourTable t
    inner join
    yourTable t2 on t2.Person = t.Person
    and t2.[Order] = (t.[Order] +1)
where
    t2.Event = 'Eyewear'
    and t.Event = 'Exam'

关于sql - 仅包括事件顺序有效的分组观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270331/

相关文章:

sql - SQL Server 中的 "PARALLEL"等效项是什么

c# - 在不对数据库连接执行查询的情况下解析 SQL Server 查询

sql-server - 更改 Excel 中的默认数据库连接

sql - 将一列中的值拆分为 2 列

php - MySQL:如何获取带行的序号?

mysql - 如何比较where子句中的多行

sql - 尝试在 SQL Server 中创建计算列

sql - Azure 开发运营 : Continuous deployment for sql script

mysql - 加入两个表,但仍然获得第一个表的完整数据

sql - 在 Postgres 中创建函数时必须是函数的所有者