2017-02-15 1 views
2

Я хочу выбрать начальный баланс первого месяца и остаток на конец последнего месяца в PostgreSQl, а затем теперь сумму дохода как общий доход и сумму расходов в виде общих расходов в той же строке. .. Вот мои данные нижеВыбор данных из разных строк

ID OPENING_BAL INCOME EXPENDITURE CLOSING_BAL COUNCIL_NAME DATE_COMPILED 
21 5000.00 1000.00 2000.00 6000.00  BAKONE  2017-04-28 
22 6000.00 1000.00 4000.00 9000.00  BAKONE  2017-05-31 
23 9000.00 1500.00 2000.00 9500.00  BAKONE  2017-06-30 
+0

Пожалуйста, добавьте желаемый результат – McNets

+0

OPENING_BAL TOT_INCOME TOT_EXPENDITURE CLOSING_BAL 5000,00 8000,00 3500,00 9500,00 – Dodo

+1

I konw, вставьте желаемый результат в соответствии с вашими данными выборки. – McNets

ответ

3

Вы можете сделать это с помощью функции окна:

SELECT DISTINCT council_name, 
     first_value(opening_bal) OVER w AS opening_bal, 
     sum(income) OVER w AS total_income, 
     sum(expenditure) OVER w AS total_expenditure, 
     last_value(closing_balance) OVER w AS closing_balance 
FROM my_table 
WINDOW w AS (PARTITION BY council_name ORDER BY date_compiled 
      ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING); 

Это делает суммирование в течение всего периода в таблице. Вы можете добавить предложение WHERE, чтобы выбрать диапазон date_compiled, если это необходимо.

+0

Могу ли я использовать имя_совета в предложении where, потому что в базе данных есть много советов – Dodo

+0

Я пытался и не работает .. он говорит, что w не существует – Dodo

+0

В определении окна отсутствует предложение * кадра *, а список выбора должен быть 'DISTINCT', чтобы избежать дублирования строк (оба фиксированные), но в противном случае не должно быть никаких проблем. – Patrick