基于多重标准发现首次发生

时间:2014-05-25 17:15:03

标签: sql syntax

我有一个数据库,每个客户都有一个cust_date,多个销售日期和销售计数。我需要根据客户第一次销售数量大于0来提取数据。以下是一个示例数据:

ID      CUST_DATE      SALE_DATE      SALE_CNT
7      4/20/2009      4/21/2009      0
7      4/20/2009      4/22/2009      0
7      4/20/2009      4/23/2009      5
7      4/20/2009      4/24/2009      3
27      4/21/2009      4/21/2009      4
27      4/21/2009      4/22/2009      0
27      4/21/2009      4/23/2009      2
27      4/21/2009      4/24/2009      0
28      4/20/2009      4/21/2009      1
28      4/20/2009      4/22/2009      0
28      4/20/2009      4/23/2009      0
28      4/20/2009      4/24/2009      0
32      4/21/2009      4/21/2009      0
32      4/21/2009      4/22/2009      0
32      4/21/2009      4/23/2009      0
32      4/21/2009      4/24/2009      0
34      4/21/2009      4/21/2009      0
34      4/21/2009      4/22/2009      0
34      4/21/2009      4/23/2009      0
34      4/21/2009      4/24/2009      0
44      4/20/2009      4/21/2009      0
44      4/20/2009      4/22/2009      3
44      4/20/2009      4/23/2009      0
44      4/20/2009      4/24/2009      0

我需要的最终数据如下所示:

ID      CUST_DATE      SALE_DATE      SALE_CNT
7      4/20/2009      4/23/2009      5
27      4/21/2009      4/21/2009      4
28      4/20/2009      4/21/2009      1
44      4/20/2009      4/22/2009      3

非常感谢您的协助。

由于

1 个答案:

答案 0 :(得分:0)

以下是一种适用于标准SQL的方法:

select t.*
from table t
where t.sale_date = (select min(t2.sale_date)
                     from table t2
                     where t2.id = t.id and t2.sale_cnt > 0
                    );

根据您使用的实际数据库,可能有其他方法表现更好。但table(id, sale_date)上的索引应该有助于提高性能,无论数据库如何。