从sql server

时间:2018-01-10 07:00:13

标签: sql sql-server

我在表格中有一个名为费率的列,它将针对每个合同进行更新。每个合同都有多个费率。因此,当我通过连接多个表来编写查询时,我希望从表中获取rate列。但是当我运行查询时,它会给出所有更新的费率。因此合同会重复。

我希望查询获取每个合约的最新更新费率。任何人都可以建议如何做到这一点吗?

2 个答案:

答案 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)子句的查询。

希望这个帮助