我有數據的表如下:如何選擇第一個值然後忽略休息?
id activity amount
1 unknown 20
2 storage 20
3 storage 20
4 swift 20
5 delivery 50
6 storage 20
我想創建一個查詢它帶給我的「計算」之和。 上面..期望的結果的例子是:
id activity amount calculatedsum
1 unknown 20 0
2 storage 20 20
3 storage 20 20
4 swift 20 20
5 delivery 50 70 (had 20 and 50 arrived)
6 storage 20 70
邏輯是簡單.. 找到的第一行是「存儲裝置」,也就是calculatedsum
。當遇到與'送貨'的行添加它,這是新的calculatedsum
。
這就是我試圖做的:
select *,
sum(case when activity = 'Storage' then amount
when activity = 'delivery' then + amount
else 0
end) over (order by id)
from A
但是這不工作...
我怎麼能得到預期的結果?
編輯:id是由創建的列:select row_number() over (order by .... nulls last) as id
該表包含查詢的結果...和eveytime查詢運行表復位它...因此,id始終是實際的行數。
哪裏'swift'來從? –
當你沒有給他們輸入時,你是如何獲得「未知」和「快速」活動的?請使用正確的數據創建[sqlfiddle](http://sqlfiddle.com) – Utsav