我在带有后端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列显示结果。 请帮忙。
答案 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版,因此分析函数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。
如果需要调整/进一步详细说明,请发表评论。