【发布时间】:2014-10-25 14:11:01
【问题描述】:
正如标题所说,我在使用 SQL Server 2008 R2 时遇到了一个特殊问题。 我目前正在使用 Analytics 项目中的庞大数据集,每个表中有近 100 万行。现在的问题是,如果我使用普通的 select 语句运行查询,例如 Select * from Table... 给我整个表格的结果,即使是 where 条件也给出了完美的结果。
但是,只要我在查询中使用任何聚合函数,我就只会得到 65536 行,之后查询就会退出。现在我百分之百确定结果集比返回的要大得多。 在提出问题之前我尝试过的步骤。 1) 尝试在 SQL Server Management Studio 选项中将结果增加到网格大小。它的最大值为 65536 2) 使用查询导出为 CSV。总行数为 65536 3) 导出到 Excel.. 同样的问题。
请指导我我做错了什么。
作为参考,我发布了遇到此问题的 SQL 查询。
选择 a.Store,a.Seq_Item, MIN(a.Date) StartDate,MAX(a.Date) EndDate,SUM(a.Transaction_Items)tot_sales, COUNT(a.Transaction_Items)tot_sales_day,(DATEDIFF(DAY, MIN(a.Date), MAX(a.Date))+1)actual_days, ROUND(SUM(a.Transaction_Items)/CAST(COUNT(a.Transaction_Items) 作为浮点数),2)avg_sales_per_sales_day, ROUND(SUM(a.Transaction_Items)/CAST((DATEDIFF(DAY, MIN(a.Date), MAX(a.Date))+1) 作为浮点数),2)avg_sales_per_actual_day, round((ROUND(SUM(a.Transaction_Items)/CAST(COUNT(a.Transaction_Items) 作为浮点数),2)/ ROUND(SUM(a.Transaction_Items)/CAST((DATEDIFF(DAY, MIN(a.Date), MAX(a.Date))+1)作为浮点数),2)),2)sales_day_velocity, ROUND(round((ROUND(SUM(a.Transaction_Items)/CAST(COUNT(a.Transaction_Items) as float),2)/ ROUND(SUM(a.Transaction_Items)/CAST((DATEDIFF(DAY, MIN(a.Date), MAX(a.Date))+1)as float),2)),2),0) 类别 从 店铺129个 group by a.Seq_Item,a.Store order by a.Seq_Item
现在,我在 Amazon Server 托管环境中工作,并且可以选择将我的 SQL Server 版本升级到标准版。目前是Express版。现在,如果我升级,那会解决我的问题吗?
问候, Arindom Ray Chaudhuri
【问题讨论】:
-
通常为您提供这么多结果的查询无论如何都不会执行,因为实际加载结果需要相当长的时间和内存。如果您在某种视图中使用这些结果,您可能希望在查询本身中构建分页参数
-
您好 Batavia,感谢您的回复。您能否详细说明这一点,例如,如果我开始使用视图,我需要采取哪些步骤。
-
我尝试创建一个视图,但我得到了一个错误,如 ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP 或 FOR XML .
-
好的,删除了 order by 子句,仍然是同样的问题。停留在 65536 行
-
我的观点是 65536 行最有可能在许多情况下实际使用。你也可以看看这里stackoverflow.com/questions/13220743/… 看看你如何实现分页
标签: sql sql-server-2008 aggregate-functions