Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 包括带有记录的版本号_Sql_Sql Server - Fatal编程技术网

Sql 包括带有记录的版本号

Sql 包括带有记录的版本号,sql,sql-server,Sql,Sql Server,目前,我的表中有一个版本号列,所有这些列都设置为一。然而,有时账户会被关闭或重新打开,有时甚至会被更新。我想为每个新版本的帐户分配一个版本号,这是通过AccountCreatedDate实现的。因此,无论何时创建或更新帐户,它都会为我们提供AccountCreatedDate。因此,最早的AccountCreatedDate应该获得版本号1,下一个应该获得版本号2,依此类推。如何做到这一点请提供如何做到这一点的代码。我提供的代码将相同的帐户分组在一起,因为相同的帐户将具有相同的TimeID,并且

目前,我的表中有一个版本号列,所有这些列都设置为一。然而,有时账户会被关闭或重新打开,有时甚至会被更新。我想为每个新版本的帐户分配一个版本号,这是通过AccountCreatedDate实现的。因此,无论何时创建或更新帐户,它都会为我们提供AccountCreatedDate。因此,最早的AccountCreatedDate应该获得版本号1,下一个应该获得版本号2,依此类推。如何做到这一点请提供如何做到这一点的代码。我提供的代码将相同的帐户分组在一起,因为相同的帐户将具有相同的TimeID,并且我将它们按升序排列。我怎样才能给他们版本号?每个记录都有自己的标识值,称为InputRowID

    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