この MS-Access クエリは改善できますか?
つまり、「SELECT TOP 1 col FROM Table2」行が繰り返されます
Table2 の curindex の前にインデックスがある場合、クエリは Table2 の col の前の値を返します。
それ以外の場合は、ID に一致する col の値が Table3 から返されます。
すなわち
curindex = 7 の場合、返される値 = Table2 から 221
curindex = 5 の場合、返される値 = Table3 の 200
Table2 Table3
id index col id col
1 1 110 1 100
1 2 120 2 200
1 3 130 3 300
1 4 140
2 5 211
2 6 221
2 7 231
PARAMETERS [curindex] Short;
SELECT TOP 1
IIF (
( SELECT TOP 1 col
FROM Table2
WHERE index < [curindex]
AND id =
( SELECT id
FROM Table2
WHERE index = [curindex])
) ,
( SELECT TOP 1 col
FROM Table2
WHERE index < [curindex]
AND id =
( SELECT id
FROM Table2
WHERE index = [curindex])
ORDER BY index DESC
),
( SELECT TOP 1 col
FROM Table3
WHERE id =
( SELECT id
FROM Table2
WHERE index = [curindex])
)
) AS col
FROM Table2
ORDER BY index