我想显示数据库中从头到尾遇到一个值的所有记录。
假设数据库包含: 表名:计划
Place Date Weather People
Park 01-01-14 Sunny 12
Beach 03-05-17 Cloudy 56
Hill 14-09-18 Sunny 8
Cafe 23-11-22 Windy 24
Hill 06-01-23 Rainy 18
在这里,我想显示所有记录,直到到达 Place 值为 'Hill' 的记录。然后我想终止查询。
我想出了下面提到的差距的代码:
SELECT *
FROM PLAN
WHERE CASE
WHEN PLACE = 'Hill' THEN <TERMINATE>
END
ORDER BY DATE;
我还尝试使用“UNBOUNDED PRECEDING AND CURRENT”函数,但是由于没有窗口函数来显示我在研究之后知道的记录,所以我遇到了死胡同。
预期产出:
Place Date Weather People
Park 01-01-14 Sunny 12
Beach 03-05-17 Cloudy 56
Hill 14-09-18 Sunny 8
假设列
date
是实际日期,而不是字符串,您可以使用简单的 where with less then equal 条件和子查询来隐藏事件在山上的首次出现。
SELECT *
FROM PLAN
WHERE Date <= (select min(date) from PLAN where place = 'Hill')
ORDER BY DATE;