为每n行添加计数器列到表中
我期待添加一个像CusID
这样的列,它本质上是一个可以根据variables@nrows
select的计数器。 在这种情况下, @nrows
是3,只是简单地沿着添加的表格date,并为行中的每个项目添加计数器。
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中做到这一点,将不胜感激。
这可以用Excel中的两个公式计算,第一个计算行数并与@nrows比较
在屏幕截图中的位置A3
=IF(B3=B2,(A2+1),1)
第二位在屏幕截图中的ID,位置B4
=IF(A3=$B$1,B3+1,B3)
B1中的值是variables“@nrows”
B3中的值是起始者ID,所以你可以从任何你想要的值开始。
什么= MAX(1,ROUNDUP(ROW()/ @ NROWS,0))我相信产生你想要的结果。
可能不起作用的一个原因是“@NROWS”variables,OP表示他想使用。 我承认在我的testing中我使用= MAX(1,ROUNDUP(ROW()/ 3,0))
不知道如何在Excel中做到这一点,但你可以先将数据加载到SQL服务器,然后下面的语法将帮助你
select NTILE(@NRows) over (order by DateAdded desc), DateAdded from tablename
将ROW_NUMBER()
函数应用于行集。 它将产生从1开始的连续数字。通过向它们添加@nrows - 1
并通过@nrows
分割结果来修改这些数字:
SELECT CustID = (ROW_NUMBER() OVER (ORDER BY DateAdded) + @nrows - 1) / @nrows, DateAdded FROM atable ;
在SQL Fiddle上查看演示。