我想在我的表中添加一列,如下所示:
这只是表格结构的一个例子,真正的表格有 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
因此,每次在“子组”中有一个值时,我都希望 (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
在某些情况下,表格与上面类似,上面有两个“标题”。在这种情况下,在这种情况下,我还想要第一行(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
这是来自 MS 的示例:
http://technet.microsoft.com/en-us/library/hh231256.aspx
关于sql - 如何从上面的行中选择信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8943469/