每n行为表添加计数器列

时间:2013-03-20 03:07:38

标签: sql sql-server sql-server-2008 excel

我希望添加一个像CusID这样的列,它本质上是一个可以根据变量@nrows选择的计数器。在这种情况下,@nrows为3,只是简单地将所添加的表日期下移,并且对于行中的每个项目,它都会添加计数器。

CustID --- DateAdded ---

 1         2012-02-09 
 1         2012-02-09 
 1         2012-02-08 
 2         2012-02-07 
 2         2012-02-07
 2         2012-02-07 
 3         2012-02-06
 3         2012-02-06

如果有人能告诉我如何在MSSQL中这样做,我们将不胜感激。

4 个答案:

答案 0 :(得分:1)

这可以在Excel中使用两个公式完成,第一个计算行并与@nrows

进行比较

屏幕截图中的位置A3

=IF(B3=B2,(A2+1),1)

第二个将ID,位置B4放在屏幕截图

=IF(A3=$B$1,B3+1,B3)

B1中的值是变量" @nrows"

B3中的值是入门ID,因此您可以从任何您想要的值开始。

enter image description here

答案 1 :(得分:1)

怎么样?     = MAX(1,ROUNDUP(ROW()/ @ NROWS,0)) 我相信会产生你想要的结果。

它可能不起作用的一个原因是“@NROWS”变量,OP表示他想使用它。我承认在我使用的测试中     = MAX(1,ROUNDUP(ROW()/ 3,0))

答案 2 :(得分:0)

不知道如何在excel中执行此操作,但您可以先将数据加载到SQL Server中,然后以下语法将帮助您


select NTILE(@NRows) over (order by DateAdded desc), DateAdded from tablename

答案 3 :(得分:0)

ROW_NUMBER()函数应用于行集。它将从1开始生成连续数字。通过向@nrows - 1添加@nrows并将结果除以SELECT CustID = (ROW_NUMBER() OVER (ORDER BY DateAdded) + @nrows - 1) / @nrows, DateAdded FROM atable ; 来修改这些数字:

{{1}}

查看演示at SQL Fiddle