Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取交叉应用中的最大行数_Sql_Sql Server_Sql Server 2012_Row Number_Cross Apply - Fatal编程技术网

Sql 获取交叉应用中的最大行数

Sql 获取交叉应用中的最大行数,sql,sql-server,sql-server-2012,row-number,cross-apply,Sql,Sql Server,Sql Server 2012,Row Number,Cross Apply,我在计算sql案例中的最大行数时遇到问题 我将在SQL Fiddle示例中直接解释它,因为我认为理解它会更快: “OrderNumber”、“HourMinute”和“Code”列仅代表我的表,因此,不应与编码目的相关 列“DateOnly”包含日期 “电话”列包含我的客户的电话 “购买”列包含客户在过去12个月内购买的次数。请注意,此值是为每个日期提供的,因此12个月的时间段是相对于我们正在评估的日期的。 最后,我试图制作的专栏是“PREVIOUSPURCHASES”,它统计“Purchase

我在计算sql案例中的最大行数时遇到问题

我将在SQL Fiddle示例中直接解释它,因为我认为理解它会更快:

“OrderNumber”、“HourMinute”和“Code”列仅代表我的表,因此,不应与编码目的相关 列“DateOnly”包含日期 “电话”列包含我的客户的电话 “购买”列包含客户在过去12个月内购买的次数。请注意,此值是为每个日期提供的,因此12个月的时间段是相对于我们正在评估的日期的。 最后,我试图制作的专栏是“PREVIOUSPURCHASES”,它统计“Purchases”专栏中提供的数字在过去12个月内出现在每部手机上的次数

您可以在SQLFiddle示例中看到我迄今为止所取得的成就。“PREVIOUSPURCHASES”列正在生成我想要的,但是,它也生成较低的值,例如,只有最大值才是我需要的值

例如,您可以看到第4行和第5行是重复的,一行的“PREVIOUSPURCHASES”为1,另一行的“PREVIOUSPURCHASES”为2。在这种情况下,我不想坐第四排

我曾经考虑过用maxrow\u的数字来代替row\u的数字,但是我还没能制作出来。我已经在stackoverflow上看过类似的帖子了

这应该在SQL Server 2012中实现


提前感谢。

我不确定您想要查看哪种结果集,但返回的结果有什么问题吗

SELECT c.OrderNumber, c.DateOnly, c.HourMinute, c.Code, c.Phone, c.Purchases, MAX(o.PreviousPurchases)
FROM cte c CROSS APPLY (
                      SELECT t2.DateOnly, t2.Phone,t2.ordernumber, t2.Purchases, ROW_NUMBER() OVER(PARTITION BY c.DateOnly ORDER BY t2.DateOnly) AS PreviousPurchases
                      FROM CurrentCustomers_v2 t2
                      WHERE c.Phone = t2.Phone AND t2.purchases<=c.purchases AND DATEDIFF(DAY, t2.DateOnly, c.DateOnly) BETWEEN 0 AND 365
                      ) o
WHERE c.OrderNumber = o.OrderNumber
GROUP BY c.OrderNumber, c.DateOnly, c.HourMinute, c.Code, c.Phone, c.Purchases
ORDER BY c.DateOnly

1购买可以是整数吗?2不清楚以前的购买情况。你介意根据你的数据发布所需的结果吗?谢谢,这正是我需要的