我希望添加一个像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中这样做,我们将不胜感激。
答案 0 :(得分:1)
这可以在Excel中使用两个公式完成,第一个计算行并与@nrows
进行比较屏幕截图中的位置A3
=IF(B3=B2,(A2+1),1)
第二个将ID,位置B4放在屏幕截图
中=IF(A3=$B$1,B3+1,B3)
B1中的值是变量" @nrows"
B3中的值是入门ID,因此您可以从任何您想要的值开始。
答案 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。