Sql server SQL Server 2008 r2是否可以在筛选器中进行筛选器?

Sql server SQL Server 2008 r2是否可以在筛选器中进行筛选器?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,大家好,我的社区 我想在这方面寻求帮助。你看,我需要获得产品ID中每个分支最近一次交易的开始数量和交易金额的总和。我在获取总和方面没有任何问题,但是我很难过滤每个分支的最新事务。我是SQL Server的新手,一直在寻找合适的查询解决方案,我可以适应这种情况,但仍然无法找到它 以下是我的数据库的外观: ROW_NUM | Prod_ID | Branch | Beginning_Amount | Transaction_Amount | Transaction_Date 1 |

大家好,我的社区

我想在这方面寻求帮助。你看,我需要获得产品ID中每个分支最近一次交易的开始数量和交易金额的总和。我在获取总和方面没有任何问题,但是我很难过滤每个分支的最新事务。我是SQL Server的新手,一直在寻找合适的查询解决方案,我可以适应这种情况,但仍然无法找到它

以下是我的数据库的外观:

ROW_NUM |  Prod_ID | Branch |  Beginning_Amount  | Transaction_Amount | Transaction_Date
1       |  Item1   |   1    |         320        |       1325         | 2014-01-01 10:01:00.000
2       |  Item1   |   1    |        12000       |       1000         | 2013-01-01 10:01:00.000
3       |  Item1   |   2    |          0         |        930         | 2013-01-01 10:01:00.000
4       |  Item2   |   1    |         500        |        650         | 2014-01-01 10:01:00.000
5       |  Item2   |   2    |        1500        |       1200         | 2013-01-01 10:01:00.000
6       |  Item3   |   2    |        9600        |       1000         | 2014-01-01 10:01:00.000
7       |  Item3   |   2    |       160000       |      12300         | 2013-01-01 10:01:00.000
如果我使用MaxTransaction_Date和Internal Join,则在一个查询中,无论分支如何,都只检索每个产品Id的最新事务

ROW_NUM |  Prod_ID | Branch |  Beginning_Amount  | Transaction_Amount | Transaction_Date
1       |  Item1   |   1    |         320        |       1325         | 2014-01-01 10:01:00.000
2       |  Item2   |   1    |         500        |        650         | 2014-01-01 10:01:00.000
3       |  Item3   |   2    |        9600        |       1000         | 2014-01-01 10:01:00.000
但我需要它是每个分支机构的最新交易,就像下面的一样

ROW_NUM |  Prod_ID | Branch |  Beginning_Amount  | Transaction_Amount | Transaction_Date
1       |  Item1   |   1    |         320        |       1325         | 2014-01-01 10:01:00.000
2       |  Item1   |   2    |          0         |        930         | 2013-01-01 10:01:00.000
3       |  Item2   |   1    |         500        |        650         | 2014-01-01 10:01:00.000
4       |  Item2   |   2    |        1500        |       1200         | 2013-01-01 10:01:00.000
6       |  Item3   |   2    |        9600        |       1000         | 2014-01-01 10:01:00.000
但我不知道如何筛选每个分行的最新交易日期

到目前为止,以下是我的代码:

Select   inv1.prod_ID,
         inv1.branch,
         inv1.beginning_amount,
         inv1.transaction_amount
         inv2.LatestDate
From     inv_table inv1
      inner join
         (Select prod_ID, branch, MAX(transaction_date) LatestDate
          from inv_table inv2
          group by prod_code, branch) inv2
On       inv1.prod_code = inv2.prod_code and
         inv1.site = inv2.site
Group by inv1.prod_ID,
         inv1.branch,
         inv1.beginning_amount
         inv1.transaction_amount
试试这个:

;with cte as
(select *, row_number() over (partition by prod_id, branch order by transaction_date desc) rn
 from inv_table)

 select * from cte
 where rn = 1
“行编号”功能将对相同产品id和分支机构组合的记录进行分组,然后按照交易日期的降序对它们进行编号。之后,每个唯一组合的最新结果就是对应于rn=1的行


我试过你的密码,它就像一个奇迹!非常感谢你我真的很感激