我有一个数据库,每个客户都有一个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
非常感谢您的协助。
由于
答案 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)
上的索引应该有助于提高性能,无论数据库如何。