我的记录具有相同的ID但两行中的数据不同 更新最终结果应该是数据中存在的该ID的最后一条记录。 示例
ID | Name | PermanentAddrss | CurrentLocation
1 | R1 | INDIA | USA
1 | R1 | INDIA | UK
现在ID
1将加载到数据库中的记录
1|R1|INDIA|UK
如何在SQL Server中为多条记录完成此操作?
答案 0 :(得分:2)
请理解SQL服务器不按数据插入顺序存储或获取数据,因此要查找最新/最后一条记录,您应该有一些方法来订购记录。
这通常是last_modified_date
之类的时间戳列。您当前的表是缓慢更改维度类型2的主要候选者;你应该考虑实施它。
请参阅Kimball网站上的 explanation 。
如果您确实没有受到任何订单的影响,只需要为每个ID添加一行,您可以尝试以下查询。
select
ID,
Name,
PermanentAddress,
CurrentLocation
from
(select
*,
row_number() over(partition by id order by (select null)) r
from yourtable)t
where r=1
答案 1 :(得分:1)
您可以通过以下方式识别最新的ID
值:
SELECT B.ID, A.NAME, A.PERMANENTADDRS, A.CURRENTLOCATION
FROM
(SELECT ID, NAME, PERMANENTADDRS, CURRENTLOCATION, MAX(RNUM) AS LATEST_ID FROM
(SELECT ID, NAME, PERMANENTADDRS, CURRENTLOCATION, ROW_NUMBER() OVER (PARTITION BY ID) AS RNUM FROM YOUR_TABLE)
GROUP BY ID, NAME, PERMANENTADDRS, CURRENTLOCATION) A
INNER JOIN
YOUR_TABLE B
ON A.LATEST_ID = B.ID;
这将获取给定ID
值的最后一个填充记录。如果最新记录的逻辑不同,则可以将其适当地合并到查询中。