SQL查询设计

时间:2018-09-19 19:30:10

标签: sql sql-server

表1:员工

EmpId  CreatedAt
100    2015-11-09 07:21:02
200    2017-01-24 18:24:01
300    2016-08-20 06:55:35

表2:帐户

AccId   EmpID  Currency  CreatedAt
9000     100       USD     2017-04-20 19:40:55
9001     200       USD     2017-04-20 19:40:55
9002     100       EUR     2017-05-20 19:40:55
9003     200       USD     2017-04-20 19:40:55
9004     100       USD     2017-04-20 19:40:55

表3:交易

 TrnsId   AccId Amount CreatedAt
  10       9000   3000  2017-04-25 19:40:55
  11       9001    500  2017-05-25 19:40:55
  12       9000   -200  2017-05-30 19:40:55
  13       9000   -500  2017-06-11 19:40:55

创建一个表,该表提供自首次创建以来每个帐户的日末余额(午夜),即,该帐户存在的每一天在表中应有一个条目,其余额应在该末尾天。

有人可以帮我写上述情况的查询吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

由于您尚未发布任何解决方案,因此我认为您需要朝正确的方向进行初步调整。希望这会有所帮助。

Account表外部联接到日历中每天都有一行的表(如果没有该表,则创建该表)(通常称为“理货表”) 。过滤掉日历中创建帐户之前的日期。

对于每个Account-Date组合,将产生一行结果,即结果中要包含的所有行。

从那里开始,只需在该Account上添加具有该Date的日末余额的列即可。有很多方法可以做到这一点。 Google“ SQL运行总计”,然后选择您喜欢的方法。