2014-02-10 2 views
0

Say У меня есть таблица tblNumbers с четырьмя полями, fldIndex и fldNumber и двух вступающих полей fldLink1 и fldLink2. Мне нужно добавить fldNumber данного индекса с fldNumber данного индекса + 1. Я попытался следующие, но я не знаю, как правильно указать, где положение во внутренней таблице ...Присоединение внешнего поля таблицы для подзапрос

SELECT T2.fldNum + T1.fldNumHalf AS fldNum 
FROM tblNumbers AS T2 INNER JOIN (SELECT fldNum/2 AS fldNumHalf 
          FROM tblNumbers 
          WHERE fldIndex = T2.fldIndex + 1) T1 ON 
tblNumbers.fldLink1 = T1.fldLink1 AND tblNumbers.fldLink2 = T1.fldLink2 

Кстати, у меня сейчас это не работает, может кто-нибудь сказать мне, где я ошибаюсь?

Sample Data... 
fldLink1 fldLink2 fldNum fldIndex 
2400  5   1.53  0 
2400  5   2  1 
2400  5   3.53  2 
2400  5   4.25  3 
2400  5   4.86  4 
2400  5   5  5 
2400  5   6  6 
2400  5   7  7 

tblNumbers.fldNum would be... 
4.25 

T1.fldNumHalf would be... 
4.86 

The final field value would be... 
6.68 
+0

Можете ли вы предоставить некоторые данные образца и желаемый результат? –

+0

@GordonLinoff Я предоставил некоторые примеры данных. – codingManiac

ответ

1

Вам не нужно подзапрос в этом случае, просто обычный присоединиться:

SELECT 
    t2.fldnum t2f,t3.fldnum t3f, 
    T2.fldNum + T3.fldnum/2 AS fldNum 
FROM 
    tblNumbers AS t2 
    INNER JOIN tblNumbers AS t3 
    ON t2.fldIndex+1=t3.fldIndex 
     AND t2.fldLink1=t3.fldLink1 
     AND t2.fldLink2=t3.fldLink2 

SQLFiddle here

0

Это звучит для меня, как вы хотите, чтобы добавить последовательные строки. Я понятия не имею, откуда приходит «половина». Я также не понимаю, почему вы заботитесь о первых двух колонках:

SELECT (T2.fldNum + T1.fldNum)/2 AS fldNum 
FROM tblNumbers T1 INNER JOIN 
    tblNumbers T2 
    on T2.FieldIndex = t1.FieldIndex + 1 
WHERE t1.FieldIndex = 3; 
Смежные вопросы