|
|
1
181
产量
编辑: 这是一个通用的解决方案,适用于大多数数据库平台。当您的特定平台(如Gareth)有更好的解决方案时,请使用它! |
|
|
2
152
最新版本的SQL Server(2012)允许以下操作。
或
这样更快。对于我来说,分区版本在34秒内完成,超过500万行。 感谢peso,他对另一个答案中提到的sql团队线程发表了评论。 |
|
|
3
17
对于SQL Server 2012以后的版本,这可能很容易:
因为
|
|
|
4
12
让我们首先使用虚拟数据创建表-->
这里我加入同一个表(自加入)
结果:
现在我们把t2的某个值求和,得到ans
期望结果
清除Dummytable |
|
5
10
CTE版本,只是为了好玩:
返回:
|
|
|
6
6
回答晚了,但又显示出一种可能性…
使用
比
|
|
|
7
3
|
|
|
8
2
在这篇优秀的文章中有一个更快的CTE实现: http://weblogs.sqlteam.com/mladenp/archive/2009/07/28/SQL-Server-2005-Fast-Running-Totals.aspx
这个线程中的问题可以这样表示:
|
|
9
1
创建表后-
|
|
|
10
1
上面(pre-sql12)的例子如下:
效率更高…
|
|
11
0
试试这个
|
|
|
12
0
试试这个:
|
|
|
13
0
sql解决方案将“前一行和当前行之间的行”和“和”结合起来,实现了我想要的目标。 非常感谢! 如果能帮上忙的话,这是我的案子。每当一个制造者被发现是“某个制造者”(示例)时,我想在一个列中累积+1。如果不是,则不显示增量,而是显示以前的增量结果。 所以这段sql:
让我得到这样的东西:
上面的解释:它以0开始“some maker”的计数,找到some maker,我们做+1。对于用户1,makerc被找到,所以我们不做+1,但是一些maker的垂直计数在下一行之前被固定在2。 分区是按用户进行的,所以当我们更改用户时,累计计数会回到零。 我在工作,我不想在这个答案上有任何价值,只要说谢谢,并展示我的例子,以防有人在同样的情况下。我试着把sum和partition结合起来,但是令人惊奇的语法“rows between unbounded preceding and current row”完成了任务。 谢谢! 探索者 |
|
|
14
0
不使用任何类型的联接累积薪资,而是使用以下查询获取人员:
|