我想在我的表中添加一列,如下所示:
这只是表格结构的一个例子,真正的表格有 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/

10-10 11:13