2017-02-15 59 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

我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子句中使用council_name,因爲數據庫中有很多理事會 – Dodo

+0

我試過並且不工作..它說w不會存在 – Dodo

+0

窗口定義缺少一個* frame子句*,並且選擇列表必須是'DISTINCT'以避免重複的行(兩個都是固定的),否則應該沒有問題。 – Patrick