Sql 包括带有记录的版本号
目前,我的表中有一个版本号列,所有这些列都设置为一。然而,有时账户会被关闭或重新打开,有时甚至会被更新。我想为每个新版本的帐户分配一个版本号,这是通过AccountCreatedDate实现的。因此,无论何时创建或更新帐户,它都会为我们提供AccountCreatedDate。因此,最早的AccountCreatedDate应该获得版本号1,下一个应该获得版本号2,依此类推。如何做到这一点请提供如何做到这一点的代码。我提供的代码将相同的帐户分组在一起,因为相同的帐户将具有相同的TimeID,并且我将它们按升序排列。我怎样才能给他们版本号?每个记录都有自己的标识值,称为InputRowIDSql 包括带有记录的版本号,sql,sql-server,Sql,Sql Server,目前,我的表中有一个版本号列,所有这些列都设置为一。然而,有时账户会被关闭或重新打开,有时甚至会被更新。我想为每个新版本的帐户分配一个版本号,这是通过AccountCreatedDate实现的。因此,无论何时创建或更新帐户,它都会为我们提供AccountCreatedDate。因此,最早的AccountCreatedDate应该获得版本号1,下一个应该获得版本号2,依此类推。如何做到这一点请提供如何做到这一点的代码。我提供的代码将相同的帐户分组在一起,因为相同的帐户将具有相同的TimeID,并且
Select * from ods.SchedulePayment
where TimeID IN(
Select TimeID
FROM ods.SchedulePayment
GROUP BY TimeID
HAVING COUNT(*) >1
)ORDER BY TimeID, AccountCreatedDate
我想你想要row_nubmer:
如果要更新该值,请执行以下操作:
with toupdate as (
select sp.*,
row_number() over (partition by TimeID order by AccountCreatedDate) as new_version_number
from ods.SchedulePayment sp
)
update toupdate
set version_number = new_version_number
where version_number <> new_version_number or version_number is null;
排号是您应该选择的
Select *, row_number() over (partition
by
Account order by accountcreationdate
asc) from ods.SchedulePayment
where TimeID IN(
Select TimeID
FROM ods.SchedulePayment
GROUP BY TimeID
HAVING COUNT(*) >1
)ORDER BY TimeID,
AccountCreatedDate
如果我有4条记录,其中它是同一个帐户,但是该帐户的更新版本,如何更新。其中所有版本当前都设置为1,我想更新它们,每次都应该有不同的版本,所以在本例中,我应该有4个不同的版本。到新日期,您可以identify@HimanshuAhuja这与他为更新所做的工作不一样。当所有的更新都设置为1时,您可以提供一个脚本来执行此操作吗我希望它根据前一行的版本号给出一个新版本?
Select *, row_number() over (partition
by
Account order by accountcreationdate
asc) from ods.SchedulePayment
where TimeID IN(
Select TimeID
FROM ods.SchedulePayment
GROUP BY TimeID
HAVING COUNT(*) >1
)ORDER BY TimeID,
AccountCreatedDate