2013-02-20 5 views
1

Предположим, у меня есть:Комплексная сумма в SQL

A  B 
andy 10 
andy 20 
andy 30 
andy 40 
paul 10 
paul 50 
ryan 3 

... и я хочу, чтобы результат:

A  B  C 
andy 10  10 
andy 20  30 
andy 30  60 
andy 40  100 
paul 10  10 
paul 50  60 
ryan 3  3 

Что запрос будет добиться этого для меня? Подумайте о C как об общей частоте.

+0

Что такое база данных? – MatheusOl

+0

Я работаю в Access –

+0

Люди по-прежнему используют Access ??? Не уверен, работают ли на нем функции окна, но вы можете попробовать ... – MatheusOl

ответ

1

Один из способов сделать это .. непроверенную предложение ... Субпроект выберите суммирует соответствующие значениям, где они соответствуют и находятся в порядке до текущей строки ...

SELECT 
    name as A, 
    value as B, 
    (SELECT sum(value) FROM the_table t2 WHERE t2.name=t1.name 
    AND t2.second_order_field<=t1.second_order_field) as C 
FROM the_table t1 
ORDER BY t1.name,t1.second_order_field 
+0

Я думаю, что вы предлагаете нечто вроде уникального идентификатора для second_order_field, который выглядит хорошо для меня. – Fionnuala

Смежные вопросы