我在数据库中有一个视图,按日期排序:
date company_name分享25.7.2016 Apple 2025.7.2016三星5026.7.2016 ……
这可以使用窗口功能完成 lag() 访问上一行的值:
lag()
select date, company_name, share from ( select date, company_name, share, lag(share) over (partition by company_name order by date) as prev_share from sometable ) x where (prev_share is null or prev_share <> share) order by date, company_name;
该 prev_share is null 必须在结果中包含“组”(=分区)的第一行。这可以通过lag()函数的默认值完成。
prev_share is null
您没有说明您的DBMS,但以上是适用于任何版本的标准SQL 现代DBMS
既然你没有提到你正在使用哪个数据库,我会给你一个伪代码的逻辑解决方案:
if previous company_name = company_name AND previous share = share if true then nothing