select grouping(vsaltype) as sq,
vsaltype || '小計計' vsaltype,
sum(amount) as amount,
'' vvin,
'' vpropertywh,
'' vpropertywhdesc
fromsptw90_inventory_ncs_tmp
group by rollup(vsaltype)
得到結果為:
:分析結論:
grouping(上捲字段)兩種情況:
sq為0情況:只是按照vsaltype進行group by
sq為1情況:把小計情況進行一次彙總,即別文寫的 group by rollup(a,b,c)的流程是group by (a,b,c)->
group by (a,b) ->group by (a)-> 全表,本例只是執行後兩句
select -1 as sq,
vsaltype,
amount,
vvin,
vpropertywh,
vpropertywhdesc
from sptw90_inventory_ncs_tmp
得到結果為:
分析結論:得到所有明細資料,並賦乙個新的虛擬欄位sq 並設sq為-1
這樣則:
select sq, vsaltype, amount, vvin, vpropertywh,vpropertywhdesc
from (select sq, vsaltype, amount, vvin, vpropertywh, vpropertywhdesc
from (select grouping(vsaltype) as sq,
vsaltype || '小計計' vsaltype,
sum(amount) as amount,
'' vvin,
'' vpropertywh,
'' vpropertywhdesc
from sptw90_inventory_ncs_tmp
group by rollup(vsaltype)
union all
select -1 as sq,
vsaltype,
amount,
vvin,
vpropertywh,
vpropertywhdesc
from sptw90_inventory_ncs_tmp
where 1 = 1) g
where g.sq <> 1
order by vsaltype, sq)
把sq為0,1行數與sq為-1行數進行union all
在where條件進行限定,取出sq非1的資料即sq<>1
so,取最終合計的話只需取出sq =1的情況
最終模型應該是這種效果(從oracle中匯出的excel):
oracle 分析函式的使用
1.rownum與rowid rownum 行數 行號.在查詢語句中之使用於 rowid 編碼 編號 唯一識別號.他們都是偽列,可以理解成表中的乙個列只是他們並不是你建立的。同樣是偽列區別是什麼呢?rowid是你錄入資料時有資料庫自動為這條記錄新增的唯一的18位編號是乙個物理編號用於找到這條記錄 順...
oracle分析函式的使用
1.實現組資料的相加,如下列資料,以前的處理方法是在前台進行加總處理。如果用分析函式處理就直接在後台處理了。74pcs 74 4 pcs70 1pcs 69 4 pcs65 4pcs 61100 pcs161 4pcs 157 2 pcs155 2pcs 153 2 pcs151 2pcs 1492...
oracle分析函式
oracle分析函式 sql plus環境 1 group by子句 create test table and insert test data.create table students id number 15,0 area varchar2 10 stu type varchar2 2 sc...