Sql 创建具有过分区的聚合结果

Sql 创建具有过分区的聚合结果,sql,sql-server,Sql,Sql Server,我有一个表,需要计算一些值 id branch coa mtu slid db cr date SumBySLID 1 0001 XYZ IDR 123 1000 300 2016-01-01 800 2 0001 XYZ IDR 123 400 500 2017-03-01 800 3 0001 XYZ IDR 123 700 500 2011-03-01 800 4

我有一个表,需要计算一些值

id  branch  coa mtu slid    db      cr   date        SumBySLID
1   0001    XYZ IDR 123     1000    300  2016-01-01  800
2   0001    XYZ IDR 123     400     500  2017-03-01  800
3   0001    XYZ IDR 123     700     500  2011-03-01  800
4   0001    XYZ IDR 1111    400     500  2017-03-01  6400
5   0001    XYZ IDR 1111    7000    500  2017-03-01  6400
SUMbySLID列由SUM(db cd)生成,并按分支、coa、mtu和SLIDE分组。事实上,我可以通过分组查询得到SUMbySLID值。我尝试按函数使用OVER PARTION,这样我就可以用列SUMbySLID显示所有数据。但是,当我添加一个过滤器date='2017/01/01'时,ID=2的数据显示SumBySLID为-100

SELECT TOP 1000 [id]
      ,[branch]
      ,[coa]
      ,[mtu]
      ,[slid]
      ,[db]
      ,[cr]
      ,date
      ,SUM(db-cr) OVER(PARTITION BY branch,coa,mtu,slid)
  FROM [Testing].[dbo].[Tbl_Test_COA]
WHERE date='2017-03-01'  

我希望id号2即使在使用WHERE子句进行一些筛选之后仍然显示SumBySLID=800。如何解决?提前感谢

在筛选之前使用子查询:

SELECT tc.*
FROM (SELECT tc.*,
             SUM(db-cr) OVER (PARTITION BY branch, coa, mtu, slid)
      FROM [Testing].[dbo].[Tbl_Test_COA] tc
     ) tc
WHERE date = '2017-03-01'