Ace*_*red 4 sql t-sql sql-server cursor sql-server-2008-r2
我想在我的表格中添加一列,如下所示:这只是表格结构的一个示例,实际表格超过 10.000 行。
No_ Name Account_Type Subgroup (New_Column)
100 Sales 3
200 Underwear 0 250 *100
300 Bikes 0 250 *100
400 Profit 3
500 Cash 0 450 *400
Run Code Online (Sandbox Code Playgroud)
因此,每次在“子组”中有一个值时,我都希望 (New_Column) 从上面的行中获取值 [No_]
No_ Name Account_Type Subgroup (New_Column)
100 Sales 3
150 TotalSales 3
200 Underwear 0 250 *150
300 Bikes 0 250 *150
400 Profit 3
500 Cash 0 450 *400
Run Code Online (Sandbox Code Playgroud)
在某些情况下,表格与上面类似,上面有两个“标题”。在这种情况下,在这种情况下,我还想要上面的第一行(150)。
这是光标的情况还是您有什么建议?
数据按No_排序
- 编辑 -
从第一行开始,然后遍历整个表:有没有办法可以存储 [No_] 的值,其中 [Subgroup] 是 ''?然后在下面每一行的 (New_Column) 中插入这个 [No_] 值,在 [Subgroup] 行中有值。当 [Subgroup] 行为空时,该过程将继续进行,在 (New_Column) 中插入下一个 [No_] 值,即如果下一行在 [Subgroup] 中有值
这是我正在尝试做的更好的图像:

SQL Server 2012 建议使用窗口偏移函数。在这种情况下:滞后
像这样的东西:
SELECT [No_]
,[Name]
,[Account_Type]
,[Subgroup]
,LAG([No_]) OVER(PARTITION BY [Subgroup]
ORDER BY [No_]) as [PrevValue]
FROM table
Run Code Online (Sandbox Code Playgroud)
这是来自 MS 的示例:http : //technet.microsoft.com/en-us/library/hh231256.aspx