Sql 每位客户在下一次购买前一周完成的调查数量

Sql 每位客户在下一次购买前一周完成的调查数量,sql,sql-server,Sql,Sql Server,嗨,朋友,即使这个代码对我有效,我也不会让所有的客户都有如下数据。周\u无客户\u ID购买\u yn 201728 87697 1 201728 87697 1 201728 87697 1 201732 87697 1 201733 87697 0 201742 87697 0 201743 87697

嗨,朋友,即使这个代码对我有效,我也不会让所有的客户都有如下数据。周\u无客户\u ID购买\u yn 201728 87697 1 201728 87697 1 201728 87697 1 201732 87697 1 201733 87697 0 201742 87697 0 201743 87697 1 我要像下面这样放出来。第二次购买前的不同周数 客户识别号(周数)
87697 2

这里有一种使用窗口函数的方法

SELECT customerID,
       PurcahseYnCount
FROM   (SELECT *,
               PurcahseYnCount = DENSE_RANK()OVER(partition BY customerID ORDER BY Week_No),
               PurcahseYnSum = Sum(PurcahseYn) OVER(partition BY customerID ORDER BY Week_No)
        FROM   Yourtable) a
WHERE  PurcahseYnSum = 2
对于旧版本

SELECT customerID,
       PurcahseYnCount
FROM   (SELECT *,
               PurcahseYnCount = Dense_Rank()OVER(partition BY customerID ORDER BY Week_No),
               PurcahseYnSum = (select Sum(PurcahseYn) from Yourtable b where a.customerID = b.customerID and a.Week_No >= b.Week_No)
        FROM   Yourtable a) a
WHERE  PurcahseYnSum = 2;
这对我有用

SELECT customer_id,
      min(PurcahseYnCount) NOofweeks
FROM         (SELECT customer_id,
               PurcahseYnCount = DENSE_RANK() OVER(partition BY cusomer_id ORDER BY survey_id),
               PurcahseYnSum = (select Sum(purchase_yn) from survey_response b where a.customer_id = b.customer_id and a.survey_id >= b.survey_id)
        FROM   survey_response a) a
WHERE  PurcahseYnSum = 2
group by customer_id
order by customer_id

我对客户ID-1使用SQL Server,PurcahseYn的第一条记录是0,那么周数怎么可能是3?我的意思是第二次购买之前的总调查周数是made@user7854107-看起来您正在使用旧版本。检查更新的代码非常感谢。不过,我在不同的周数里得到了不止一个客户id。我们是否可以在此添加组。@user7854107-您能用该示例数据和预期结果更新问题吗?谢谢这么多朋友终于在quert之后为我工作了选择客户id,minPurcahseYnCount NOofweeks FROM SELECT customer\u id,PurcahseYnCount=按客户id订单按调查id的密集等级超额分配,PurcahseYnSum=选择Sumpurchase\u yn from survey\u response b其中a.customer\u id=b.customer\u id和a.survey\u id>=b.survey\u id from survey\u response a其中PurcahseYnSum=2 group by customer\u id order by customer\u id Hi friend即使此代码对我有效,我也无法获得所有客户的数据如下。周无客户身份证购买yn 201728 87697 1 201728 87697 1 201728 87697 1 201732 87697 1 201733 87697 0 201742 87697 0 201743 87697 1