【发布时间】:2020-10-19 22:39:51
【问题描述】:
我有一个类似于下面的表格:
+-------------------------+
¦ ID ¦ Date ¦ Balance ¦
¦----+----------+---------¦
¦ A ¦ 20200620 ¦ 150 ¦
¦ A ¦ 20200621 ¦ -130 ¦
¦ A ¦ 20200621 ¦ -140 ¦
¦ A ¦ 20200621 ¦ -200 ¦
¦ A ¦ 20200622 ¦ 200 ¦
¦ A ¦ 20200622 ¦ 300 ¦
¦ B ¦ 20200621 ¦ 350 ¦
¦ B ¦ 20200621 ¦ 400 ¦
¦ B ¦ 20200621 ¦ -150 ¦
¦ B ¦ 20200622 ¦ -200 ¦
¦ B ¦ 20200622 ¦ -300 ¦
¦ B ¦ 20200623 ¦ -400 ¦
¦ B ¦ 20200623 ¦ -500 ¦
+-------------------------+
我需要计算到达 ID 和每个不同日期(包括计算中的日期本身)的“余额
+--------------------------------------------+
¦ ID ¦ Date ¦ Number_of_Consecutive_Days ¦
¦----+----------+----------------------------¦
¦ A ¦ 20200620 ¦ Null ¦
¦----+----------+----------------------------¦
¦ A ¦ 20200621 ¦ 1 ¦
¦----+----------+----------------------------¦
¦ A ¦ 20200622 ¦ 1 ¦
¦----+----------+----------------------------¦
¦ B ¦ 20200621 ¦ Null ¦
¦----+----------+----------------------------¦
¦ B ¦ 20200622 ¦ 2 ¦
¦----+----------+----------------------------¦
¦ B ¦ 20200623 ¦ 3 ¦
+--------------------------------------------+
您能建议我一种计算方法吗?非常感谢。
【问题讨论】:
-
我不明白第三行的值。如果负数日之间有正数日会怎样?
-
用零代替空值不是更有意义吗?
-
嗨@GordonLinoff,感谢您的回复。如果在同一天我们有负余额,则查询应计入当天。只要我们在给定日期至少有一个负余额,我们就会计算它。
-
嗨@shawnt00,对我来说,将 Null 设为零更有意义,因为零意味着没有提供该标准的日期,但您认为使用零而不是 null 更容易吗?
-
是的,我想我会主张零。它仍然会告诉您有多少日期符合条件。
标签: sql sql-server