在SQL中跨列的条件运行总计

时间:2011-03-17 10:32:53

标签: sql sql-server tsql running-total

我有这些数据:

Player  StartBalance    Day1Earned  Day1Spent   Day2Earned  Day2Spent   Day3Earned  Day3Spent
Alex      10              0           0           3           -5          3           -15

如何使用SQL Server对列进行滚动总计,以便第3天的结束余额(实际数据可以扩展到第30天)为0?

每日余额由前一天余额+当前赚取的当天+当前消费天数确定,如果所有3的总和小于0,余额将为0.

1 个答案:

答案 0 :(得分:0)

我会计算(并保持)你的总列数。然后你可以简单地将列加起来并将它们包装在CASE中,如果小于零则设置为0.我会使用类似的东西(在需要的地方使用ISNULL)。

(CASE WHEN ([DAY1]+[DAY2])<(0) THEN (0) ELSE [DAY1]+[DAY2] END)