如何确定(QTY)每月新客户?

时间:2014-06-30 04:58:37

标签: sql sql-server sql-server-2012

我正在使用以下选择代码来确定每月的新客户。

第1步:

select ROW_NUMBER() over(order by so.ClientID desc) as ID, *
into #t1
    from(
        select  so.ClientID, so.Product, so.StatementID, CONCAT(ClientID, CustomerGroup, Product) AS Code
        from    RG_SalesOut_Report so inner join Reporting.dbo.BrandNameForNCR br
                on br.BrandName=so.Brand
            where   so.Block=0 AND so.[All Sources]='SalesOUT' AND so.Value_CP>0 AND so.Amount>0
            group by    so.ClientID, so.Product, so.StatementID, CONCAT(ClientID, CustomerGroup, Product)
                        ) so
            order by    so.ClientID desc, so.Product, so.StatementID desc 

Spet 2:

select  distinct tab1.ClientID as NewClientID, tab1.StatementID as MonthSales
    from #t1 tab1
    RIGHT JOIN #t1 tab2
    on tab1.ID=tab2.ID-1
    where IIF(tab1.code=tab2.code, DATEDIFF(MONTH,tab2.StatementID, tab1.StatementID), 0)=0

我得到了以下结果:

enter image description here

我想得到以下结果:

enter image description here

从此表中我们可以看到,在 1月10日,我们有 5位新客户 ,并且在 2月10日< / strong> - 1位新客户 等等

如何确定每月新客户的数量? 提前致谢

1 个答案:

答案 0 :(得分:1)

您可以通过两个步骤获得所需的结果:

  1. 将步骤2的结果存储在另一个临时表中,例如#tmp2。但是,我宁愿使用公用表表达式(CTE)来执行步骤1和2,而不是创建临时表。

    注意:如果结果集很小,CTE会更好,但对于大型结果集,临时表会更好。

  2. 按客户分组并选择与每位客户对应的最短日期,然后按日期排序,如下:

    select newclientid, min(monthsales) as 'monthsales'
    from #tmp2
    group by newclientid
    order by monthsales