У меня есть таблица положений в SQL Server 2008R2 (определение ниже).
В системных полях есть позиции.
У меня есть требование найти ящик, в котором осталось Х свободных позиций. Однако позиции 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 - вставка ссылки с позициями образца для 1 ящика (все позиции в данных образца пустые)
Редактировать 2
Свободная позиция - позиция с SampleID = null