2016-07-07 65 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 

我知道這聽起來不是一個簡單的方法來更新標識列值生成一個腳本。

相關問題