Это может быть не так сложно, как видит Адам.Если бы в TableA были столбцы «directionFrom» и «directionTo», вы, вероятно, решили бы это самостоятельно.Итак, давайте разделим поле направления на два столбца:
SELECT
a.[Date], a.[Hour], a.Direction, a.Qty,
f.Area as AreaFrom, t.Area as AreaTo,
f.Price as priceFrom, t.Price as PriceTo,
t.Price-f.Price as profit
FROM
TableA a
INNER JOIN TableB f
ON
a.[Date] = f.[Date] and
a.Hour = b.[Hour] and
LEFT(a.Direction, 2) = f.Area --take the left two as the area from
INNER JOIN TableB t
ON
a.[Date] = t.[Date] and
a.Hour = t.[Hour] and
RIGHT(a.Direction, 2) = t.Area --take the right two as the area to
Если у вас когда-либо есть области с более чем двумя буквенными кодами, вам придется ПОДПИСАТЬСЯ на CHARINDEX для / вместо