У меня есть таблица позиций в SQL Server 2008R2 (определение ниже).
В системных ящиках есть позиции.
Мне нужно найти ящик, в котором осталось X свободных позиций. Однако позиции X должны быть непрерывными (слева направо, сверху вниз, т. Е. По возрастанию PositionID).
Было просто составить запрос, который находит поле со свободными позициями X. Теперь у меня проблема с определением непрерывности позиций.
Есть предложения по решению на основе TSQL?
Определение таблицы
` CREATE TABLE [dbo].[Position]( [PositionID] [int] IDENTITY(1,1) NOT NULL, [BoxID] [int] NOT NULL, [pRow] [int] NOT NULL, [pColumn] [int] NOT NULL, [pRowLetter] [char](1) NOT NULL, [pColumnLetter] [char](1) NOT NULL, [SampleID] [int] NULL, [ChangeReason] [nvarchar](4000) NOT NULL, [LastUserID] [int] NOT NULL, [TTSID] [bigint] NULL, CONSTRAINT [PK_Position] PRIMARY KEY CLUSTERED ( [PositionID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]`
Редактировать
http://pastebin.com/V8DLiucN - ссылка pastebin с позициями выборки для 1 коробки (в данных выборки все позиции пусты. )
Редактировать 2
«Свободная» позиция - это позиция с SampleID = null.