在数据库中保存

在数据库中保存

问题描述:

只改变我有一个观点在如下这是按日期顺序整理数据库:在数据库中保存

date   company_name  share 
25.7.2016  Apple    20 
25.7.2016  Samsung    50 
26.7.2016  Apple    20 
26.7.2016  Samsung    50 
27.7.2016  Apple    30 
27.7.2016  Samsung    40 

我需要做的是检查,如果两个相继日期之间的数据都是相同的。如果是,则只显示第一个日期的数据。

在我的示例中,日期25.7.2016与26.7.2016具有相同的数据,而日期26.7.2016与前一个数据不具有相同的数据。

所以我需要我的观点看起来像:

date   company_name  share 
25.7.2016  Apple    20 
25.7.2016  Samsung    50 
27.7.2016  Apple    30 
27.7.2016  Samsung    40 

我怎样才能做到这一点?

+4

作品请标签为使用的数据库。 –

+0

@VamsiPrabhala我们可以假设该视图是实际的表,并且我需要一个查询来返回两个结果日期之间的不同记录吗? –

+2

你使用了哪个数据库? SQL Server,MySQL,其他? –

这可以通过使用窗函数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()函数的默认值完成。

你不说出你的DBMS,但上面是标准的SQL任何modern DBMS

因为你没有提到你用,我给你在伪代码的逻辑解决方案时的数据库:

if previous company_name = company_name AND previous share = share 
if true then nothing