TSQL:筛选数据直到确定值



我正在尝试筛选此表,以显示直到"Connect"为止的所有内容。这看起来很容易,但我很难想出一个简单的方法来做到这一点。这只是一个ID。每个呼叫ID的"连接"可以在不同的位置。入站总是第一个。

ID Date      Log      Call ID
-----------------------------
1  12:00 PM  Inbound  12345
2  12:00 PM  Ring     12345
3  12:01 PM  Answer   12345
4  12:04 PM  Trans    12345
5  12:05 PM  Connect  12345
6  12:06 PM  Trans    12345
7  12:30 PM  Term     12345
8  12:30 PM  End      12345

查询:

SELECT *
FROM Calls
WHERE call_ID = /*Some Call_id*/
AND /*Log is from Inbound to Connect*/

期望输出:

ID Date      Log      Call ID
-------------------------------
1  12:00 PM  Inbound  12345
2  12:00 PM  Ring     12345
3  12:01 PM  Answer   12345
4  12:04 PM  Trans    12345
5  12:05 PM  Connect  12345

您可以使用相关的子查询:

select c.*
from calls c
where c.id <= (select min(c2.id)
from calls c2
where c2.call_id = c.call_id and c2.log = 'Connect'
);

您可以为特定call_id的外部查询添加额外的筛选器。

最新更新