如何在同一列中添加第二个单元格值的第一个单元格值,并在gridview的下一列中显示结果

时间:2015-07-05 09:11:08

标签: c# sql asp.net

我在带有后端sql的asp.net中有一个gridview。我需要在同一列中添加第一个单元格值和第二个单元格值,并在下一列中显示结果。  例如:sql table:

                   NO  Item    TYPE        QTY
                    1  glass   Transfer     2
                    2  glass   Invoice     -1
                    3  glass   Transfer     4

我需要将结果显示为

                     NO   Item    TYPE    QTY    Balance

                      1   glass  Transfer  2      2
                      2   glass  Invoice  -1      1
                      3   glass  Transfer  4      5

我需要在第2列中添加第4列第一个单元格,并在第5列显示结果。  请帮忙。

1 个答案:

答案 0 :(得分:0)

所描述的可以按如下方式完成:

SELECT
  no
  , item
  , type
  , qty
  , qty + LAG (qty, 1, 0) OVER (ORDER BY no) balance
FROM SomeTable
ORDER BY no
;

然而,这与您的预期结果不一致,后者看起来更像是:

的输出
SELECT
  no
  , item
  , type
  , qty
  , SUM (qty) OVER (ORDER BY no ROWS UNBOUNDED PRECEDING) balanceExample
FROM SomeTable
ORDER BY no
;

查看实际操作:SQL Fiddle

<强>更新
由于OP使用的SQL Server是2008版,因此分析函数LAGSUM不可用。在这种情况下,以下方法可能有所帮助:

SELECT
  S1.no
  , S1.item
  , S1.type
  , S1.qty
  , SUM(S2.qty) balanceExample
FROM SomeTable S1
INNER JOIN SomeTable S2
  ON S2.no <= S1.no
GROUP BY S1.no, S1.item, S1.type, S1.qty
ORDER BY S1.no
;

更新了SQL Fiddle

如果需要调整/进一步详细说明,请发表评论。