SQL 服务器 - 如何 SUM 将每行记录更改为新值



我正在使用Microsoft SQL Server Management Studio。

我想用一个常量值(比如50)对记录的每一行(比如第 ID 列)求和。

所以这里有一个更好的图片:

单击此处查看我准备的图像,以便更好地了解我的要求。

我知道SUM可以用来对整列求和并在行尾显示一个TOTAL,但是用常量值添加每一行的记录怎么样?

完成总和后,我需要执行最后一步,即将下一个新行的 ID(不需要像上面那样求和)从 154 重置为 999。任何人都可以建议我重置主键吗?

Dick,

您可以通过执行 DBCC CheckIdent 命令轻松更改标识列的下一个值

遗憾的是,没有一种简单的方法来更新标识列值。对于现有记录,到目前为止,我所经历的是将所有数据复制到新的临时表中,并在此帮助程序表上组织值。然后删除现有表。按照以下步骤将临时表重命名为原始表名称。

如果尝试删除列的标识属性,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

我知道这听起来不是更新标识列值的简单方法。

最新更新