2016-07-07 35 views
1

我正在使用Microsoft SQL Server Management Studio。如何SUM将每一行记录更改为新值?

我想将我的记录(比如说,列ID)的每一行与一个常数值(比如50)相加。

因此,这里是一个更好的画面:

Click here for the image that i prepared for better understanding of my requirement.

我知道SUM可以用来总结整列,并在该行的最后一个TOTAL出来,但如何将每行的记录具有恒定值?

一旦完成了,我需要做最后一步,即将下一个新行的ID(不需要像上面那样SUM)从154重置为999.任何人都可以建议我重置主键?

+4

我认为你正在寻找'+'。 –

+0

[修改主键](https://msdn.microsoft.com/en-us/library/ms189251.aspx) –

+0

什么是[tag:sas]标签?这是偶然的,还是这实际上会进入SAS? – Joe

回答

1

迪克,

你可以通过执行DBCC CheckIdent command

不幸的是很容易地改变标识列的下一个值,没有更新标识列值的简单方法。 对于现有的记录,我到现在为止所经历的是将所有数据复制到一个新的临时表中并在此辅助表上组织值。然后放下现有的表格。如下步骤将临时表重命名为原始表名。

如果试图删除列的标识属性中,SSMS如下

BEGIN TRANSACTION 
SET QUOTED_IDENTIFIER ON 
SET ARITHABORT ON 
SET NUMERIC_ROUNDABORT OFF 
SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_NULLS ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 
COMMIT 
BEGIN TRANSACTION 
GO 
CREATE TABLE dbo.Tmp_MyTable 
    (
    id int NOT NULL, 
    value int NULL 
    ) ON [PRIMARY] 
GO 
ALTER TABLE dbo.Tmp_MyTable SET (LOCK_ESCALATION = TABLE) 
GO 
IF EXISTS(SELECT * FROM dbo.MyTable) 
    EXEC('INSERT INTO dbo.Tmp_MyTable (id, value) 
     SELECT id, value FROM dbo.MyTable WITH (HOLDLOCK TABLOCKX)') 
GO 
DROP TABLE dbo.MyTable 
GO 
EXECUTE sp_rename N'dbo.Tmp_MyTable', N'MyTable', 'OBJECT' 
GO 
COMMIT 

我知道这听起来不是一个简单的方法来更新标识列值生成一个脚本。

相关问题