从特定点开始每个 SQL 记录
Posted
技术标签:
【中文标题】从特定点开始每个 SQL 记录【英文标题】:Starting each SQL record from a specific point 【发布时间】:2021-08-09 12:26:04 【问题描述】:我想弄清楚如何从 SQL 中的特定点开始每条记录。我创建了一个数据集来尝试表示我想要的。
这是起始数据集。
但是,我想获得一个新的观点,有一个明确的起点。
所以每个成员记录从 ID 33 开始,按成员和日期排序。基本上想要 ID 33 之后的每条记录及其对应的日期。
【问题讨论】:
你的意思是... where ID>=33
?
添加图片作为数据不是一个好主意。请添加您的示例数据和预期结果。
@StephanBauer 我刚刚修改了照片。 ID 并不总是逐渐变大。我想选择 ID = 33 的行及其对应的日期。然后是每个成员在该日期之后的所有内容。抱歉,我应该更清楚地说明这一点
【参考方案1】:
如果你的 id 是有序的,你可以使用:
select t.*
from t
where id >= 33
order by member, date;
如果 id 不按顺序排列,一种方法是关联子查询:
select t.*
from t
where date >= (select min(t2.date) from t t2 where t2.member = t.member and t2.id = 33);
最后,一个windows函数方法是:
select t.*
from (select t.*,
min(case when id = 33 then date end) over (partition by member) as date_33
from t
) t
where date >= date_33;
【讨论】:
我刚刚修改了原始问题,因为我想要 ID=33 中的日期以及每个成员在该日期之后的所有行 @MWong 。 . .这就是除了第一个答案之外的所有内容。以上是关于从特定点开始每个 SQL 记录的主要内容,如果未能解决你的问题,请参考以下文章