sql - 如何从上面的行中选择信息?

标签 sql sql-server tsql 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

因此,每次在“子组”中有一个值时,我都希望 (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] 中有值

这是我正在尝试做的更好的图像:
enter image description here

最佳答案

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/

相关文章:

php - 警告 : mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ,

sql-server - "NOEXEC ON"中的有趣行为

sql-server - 在 Ubuntu 16.04 上使用 MS SQL 的 OGR2OGR

c# - 传入模型时如何使用 Dapper 构建动态 Where 子句

sql - Sql 中的 NULL 检查

php - 如果 ROW2 包含 "string",则 MySQL 更改 ROW1

sql - 在具有匹配键的 SQL 中从更新

sql-server - 表隐藏在SQL Server数据库中?

sql - 非 NULL 值的 ISNULL/COALESCE 对应物

SQL:将一列数据转换为多列