Попытка запустить запрос для определения начала и остановки пробелов и островов в моей таблице. Я применяю запрос, который, как я думаю, будет работать для моего набора данных, но я не могу выполнить его должным образом. Я получаю ошибку преобразования, когда запускаю этот код:
select start, stop
from (
select m.API_WellNo + 1 as start,
(select min(API_WellNo) - 1
from tblWellMaster x
where x.API_WellNo > m.API_WellNo) as stop
from tblWellMaster m left outer join tblWellMaster r on m.API_WellNo = r.API_WellNo - 1
where r.API_WellNo is null
) as x
where stop is not null;
Вот ошибка, которую я получаю: Преобразование значения nvarchar '31003022850000' привело к переполнению столбца int.
Я не могу понять, откуда берется этот столбец int, потому что мой API_WellNo — это nvarchar(14)
Это число является одним из идентификаторов, составляющих последовательность, в которой я пытаюсь найти пробелы/острова, любая помощь очень ценится, спасибо
min
преобразует API_WellNo из nvarchar в int. Указанное число слишком велико для столбца int. - person Robbert   schedule 17.12.2014m.API_WellNo + 1
иmin(API_WellNo) - 1
вызывают неявное приведение к числовому типу - person Serpiton   schedule 17.12.2014MIN(CAST(API_WellNo AS BIGINT))
- person Mihai   schedule 17.12.2014