Sql-Server-2012

如何在每個分組的最大 n 中獲取 Max(col) 的值,並將其分組到聲明的變數中。MS SQL 伺服器

  • January 22, 2020

我正在尋找如何將@MaxItemSeqNum 的值設置為 MAX(dbo.

$$ Table1 $$.$$ Item_Seq_number $$) 在我的選擇語句中。我需要這個才能為該分組項插入具有下一個序列的下一條記錄。我已經有一個代理主鍵,它會自動遞增並用於標識表中的所有項目。Batch_ID 可以有重複項,我按這些進行分組,然後選擇 itemSeqNum 的最大值以插入下一個序列 itemSeqNum + 1。因此,如果我有 5 條具有相同 batch_Id 的記錄,我希望得到 5 作為結果並將其增加 1。

DECLARE @MaxItemSeqNum Int

SELECT Batch_Id,MAX(dbo.[Table1].[Item_Seq_number])
FROM Table1
WHERE Batch_Id = 1
Group By Batch_Id

如何將@MaxItemSeqNum 的值設置為返回的結果

任何一個

SET @MaxItemSeqNum = ( SELECT MAX([Table1].[Item_Seq_number])
                      FROM Table1
                      WHERE Batch_Id = 1
                      Group By Batch_Id );

或者

SELECT @MaxItemSeqNum = MAX([Table1].[Item_Seq_number])
                       FROM Table1
                       WHERE Batch_Id = 1
                       Group By Batch_Id;

小提琴

最後一個變體更有用——它允許在一個語句中將值分配給多個變數。

引用自:https://dba.stackexchange.com/questions/257920