ギャップがある可能性のある値を持つ 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 VAL FROM (
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
) tbl として PORTID ASC で注文