Это точно для двух связанных записей.Присоединитесь к таблице B дважды:
SELECT
A.TableA_ID,
A.VALUE AS VALUE_A
B1.VALUE AS VALUE_B1
B2.VALUE AS VALUE_B2
FROM
TableA AS A
INNER JOIN TableB B1 ON B1.TableA_ID = A.TableA_ID
INNER JOIN TableB B2 ON B2.TableA_ID = A.TableA_ID
WHERE
B1.TableB_ID < B2.TableB_ID
Если в таблице B есть столбец, определяющий, что такое «первое значение», а что «второе значение», это становится еще проще (и это будет работать так дляN столбцов в таблице B, просто добавьте больше объединений):
SELECT
A.TableA_ID,
A.VALUE AS VALUE_A
B1.VALUE AS VALUE_B1
B2.VALUE AS VALUE_B2
FROM
TableA AS A
INNER JOIN TableB B1 ON B1.TableA_ID = A.TableA_ID AND B1.Type = '1'
INNER JOIN TableB B2 ON B2.TableA_ID = A.TableA_ID AND B2.Type = '2'
Составной индекс на TableB
сверх (TableA_ID, Type)
помогает этому объединению.