Sql server SQL Server 2008 r2是否可以在筛选器中进行筛选器?
大家好,我的社区 我想在这方面寻求帮助。你看,我需要获得产品ID中每个分支最近一次交易的开始数量和交易金额的总和。我在获取总和方面没有任何问题,但是我很难过滤每个分支的最新事务。我是SQL Server的新手,一直在寻找合适的查询解决方案,我可以适应这种情况,但仍然无法找到它 以下是我的数据库的外观: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 |
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的行
我试过你的密码,它就像一个奇迹!非常感谢你我真的很感激