У меня есть таблица с целочисленным столбцом с именем ID со значениями, которые могут иметь пробелы (например, 1,2,3,4,7,8,10,14,15,16,20)
Я хотел бы найти запрос, который в приведенном выше примере привел бы к следующему:
1-4
7-8
10
14-16
20
= ОБНОВЛЕНИЕ =
Благодаря приведенному ниже коду (который, кажется, хорошо работает в SQL Server), я чувствую, что очень близок к тому, чтобы заставить его работать в MS-Access, что является целью. Я все еще получаю синтаксическую ошибку в своем отчете, которую я не могу понять ...
ВЫБРАТЬ ВАЛ ОТ
(
SELECT islands.PORTID, CSTR(islands.PORTID ) as val
FROM MYTABLE islands
WHERE NOT EXISTS (SELECT * FROM MYTABLE t2 WHERE t2.PORTID = islands.PORTID - 1)
AND NOT EXISTS (SELECT * FROM MYTABLE t2 WHERE t2.PORTID = islands.PORTID + 1)
UNION
SELECT
rngStart.PORTID
,CSTR(rngStart.PORTID ) + '-'
+ CSTR(MIN(rngEnd.PORTID)) as val
FROM MYTABLE rngStart
INNER JOIN MYTABLE checkNext ON checkNext.PORTID = rngStart.PORTID + 1
INNER JOIN
(
SELECT PORTID
FROM MYTABLE tblRangeEnd
WHERE NOT EXISTS (SELECT * FROM MYTABLE t2 WHERE t2.PORTID = tblRangeEnd.PORTID + 1)
) rngEnd on rngEnd.PORTID > rngStart.PORTID
WHERE NOT EXISTS (SELECT * FROM MYTABLE t2 WHERE t2.PORTID = rngStart.PORTID - 1)
GROUP BY rngStart.PORTID
) как тбл
ЗАКАЗ ПОРТИДА ASC