我在表格中有一个名为费率的列,它将针对每个合同进行更新。每个合同都有多个费率。因此,当我通过连接多个表来编写查询时,我希望从表中获取rate列。但是当我运行查询时,它会给出所有更新的费率。因此合同会重复。
我希望查询获取每个合约的最新更新费率。任何人都可以建议如何做到这一点吗?
答案 0 :(得分:1)
如果合同表中有updatedTime列,那么您可以使用ROW_NUMBER
并为每个合约采用最新费率并将其与合同表一起加入。
SELECT c.contractoid ,x.rateamount as ContractRate
FROM (
SELECT *,ROW_NUMBER() OVER (PARTITON BY contractoid ORDER BY UpdatedTime DESC) AS RN
FROM contractrate ) x
INNER JOIN dbo.contract C ON x.contractoid=c.contractoid
WHERE x.RN=1
答案 1 :(得分:0)
您需要在费率表中保存更新时间,然后通过更新desc获得(Top 1)子句的查询。
希望这个帮助