如何在遇到特定值之前显示表的所有记录?

问题描述 投票:0回答:1

我想显示数据库中从头到尾遇到一个值的所有记录。

假设数据库包含: 表名:计划

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
sql snowflake-cloud-data-platform case window-functions terminate
1个回答
0
投票

假设列

date
是实际日期,而不是字符串,您可以使用简单的 where with less then equal 条件和子查询来隐藏事件在山上的首次出现。

SELECT *
FROM PLAN
WHERE Date <= (select min(date) from PLAN where place = 'Hill')
ORDER BY DATE;
© www.soinside.com 2019 - 2024. All rights reserved.