2017-04-19 42 views
2

我目前工作的一個存儲過程在SQL Server 2012中,我有以下表格:T-SQL SELECT TOP保值增值

Id | SalesAreaId | CollectionId 
---+-------------+----------- 
1 |  12  |  1 
2 |  7  |  1 
3 |  5  |  1 

我要選擇最高CollectionId並加+1 。

DECLARE @CollectionId INT = 1; 

SELECT TOP 1 @CollectionId = [CollectionId] 
FROM [MyProject].[Sales] 
WHERE [CollectionId] = MAX([CollectionId]) 

@CollectionId = @CollectionId + 1 

結果在下@CollectionId應該是2,遺憾的是這並沒有真正的工作...

你有關於如何解決這個問題的想法?

非常感謝!

+0

你想要什麼結果? –

+0

下一個@CollectionId應該是2 – TimHorton

回答

3

就寫爲:

SELECT @CollectionId = MAX([CollectionId]) 
FROM [MyProject].[Sales]; 

通常情況下,你會做增量在SELECT考慮到一個空表:

SELECT @CollectionId = COALESCE(1 + MAX([CollectionId], 1) 
FROM [MyProject].[Sales]; 
+0

Superbe,感謝您的幫助! – TimHorton

0
DECLARE @CollectionId INT = 1; 
SELECT @CollectionId = ((SELECT MAX(CollectionId) FROM [MyProject].[Sales])+1);  

遞增最後collectionid如果最後一個collectionid是所有collectionid中最大的一個,則返回一個

+0

僅有代碼的答案對教育SO讀者沒有太大幫助。請編輯您的答案以包含一些解釋。您的答案位於審覈隊列中,因爲它已被標記爲低質量。 – mickmackusa

0

您可以簡單選擇如下:

SELECT TOP 1 (CollectionId + 1) 
FROM Sales 
ORDER BY CollectionId DESC