【问题标题】:How to add the first cell value with the second cell value in the same column and display result in next column in gridview如何在同一列中添加第一个单元格值和第二个单元格值并在gridview的下一列中显示结果
【发布时间】:2015-07-05 09:11:07
【问题描述】:

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

                   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

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

【问题讨论】:

  • 您使用的是哪个版本的数据库?数据真的是按NO排序的吗?
  • 你预期结果中的pen来自哪里? -- 并且 -1 + 4 = 3 而您似乎期望 5。
  • 不,它也是玻璃的,数据库使用的是sql 2008,我需要在列中添加第一个单元格和第二个单元格并在下一列中显示结果,就像我在示例中显示的那样跨度>

标签: c# sql asp.net


【解决方案1】:

您描述的可以如下进行:

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版本,解析函数LAG和SUM不可用。在这种情况下,以下方法可能会有所帮助:

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。

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

【讨论】:

  • 先生,执行时显示错误,因为 LAG' 不是可识别的内置函数名称。
  • 你在哪里得到这个错误?示例SQL Fiddle 确实使用了 MS SQL Server 2008,并且运行良好。而且您似乎已经表明使用相同的数据库版本。
  • sqlserver 2008不支持Sir LAG功能,不支持Lag和Lead。有没有其他方法可以实现
  • 有什么办法可以在 asp.net 的 gridview 中做到这一点。
  • 我试过这样,但如果 (e.Row.RowType == DataControlRowType.DataRow) { total = total + Convert.ToDouble(GridView1.Rows[1].Cells[6) 会显示错误]。文本); //Label2.Text = total.ToString(); //Label2.Text = GridView1.Rows[1].Cells[6].Text; GridView1.Rows[1].Cells[7].Text = total.ToString(); }
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
相关资源
最近更新 更多