T-SQL SELECT TOP值和增量

时间:2017-04-19 12:04:49

标签: sql sql-server tsql stored-procedures

我目前正在使用SQL Server 2012中的存储过程。我有下表:

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,不幸的是,这并不是真的有用......

您对如何解决此问题有所了解吗?

非常感谢!

3 个答案:

答案 0 :(得分:3)

只需将其写为:

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

通常情况下,您会在SELECT 中进行增量考虑空表:

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

答案 1 :(得分:0)

DECLARE @CollectionId INT = 1;
SELECT @CollectionId  = ((SELECT MAX(CollectionId) FROM [MyProject].[Sales])+1);    
如果最后一个collectionid是所有collectionid中最大的

将最后一个collectionid递增1

答案 2 :(得分:0)

您可以简单地按以下方式选择

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