您好,我正在尝试使用group by rollup来获取列的总计,但当我这样做时,它正在复制行。我做错了什么?谢谢。

代码:
WITH TOTS AS
(
select
swkl.prn_cln_n,
swkl.swkl_bgn_dt,
swkl.swkl_end_dt,
swkl.sec_id,
actbl.*
from actbl
join actblc on actblc.actbl_seq_id = actbl.actbl_seq_id
join swkl on swkl.swkl_id = actblc.swkl_id
where swkl.prn_cln_n = '242931'
and swkl.stlm_rcd_sta_cd = 'A'
and trunc(swkl.stlm_rcd_mntd_ts) = to_date('03/10/2021','mm/dd/yyyy') --'14-JUN-2021'
and actblc.actblc_wkfl_pcs_cd = 'COM'
and actblc.stlm_rcd_sta_cd = 'A'
)
,F2 AS
(
SELECT PRN_CLN_N AS CLIENT_NUMBER
,LINE_TYPE_HM
,PR_TYP_C
,SUM(BIIL_A) AS BILL_AMOUNT
FROM TOTS
GROUP BY PRN_CLN_N
,LINE_TYPE_HM
,PR_TYP_C
)
SELECT coalesce(CLIENT_NUMBER,'TOTAL') AS CLIENT_NUMBER
,LINE_TYPE_HM
,PR_TYP_C
,SUM(BILL_AMOUNT) BILL_AMOUNT
FROM F2
group by rollup (CLIENT_NUMBER
,LINE_TYPE_HM
,PR_TYP_C)发布于 2021-09-25 04:37:25
据我所知,没有什么问题。
在使用rollup时,您可以在it - client_number, line_type_hm, pr_typ_c中指定列,即3列。rollup将生成分类汇总的3 + 1 = 4级别。这些小计通过在汇总列中包含NULL值来直观地标识。在你的截图中,
pr_typ_c为NULL (第2行、第4行、第6行、...)的行line_type_hm和D14均为空)client_number列我没有您的表和数据,所以您可能知道下一步要做什么,因为您可以通过执行来减少小计的数量。多么?例如,
group by client_number, rollup(line_type_hm, pr_typ_c)或汇总列的任何其他组合。
试一试,看看会发生什么。
https://stackoverflow.com/questions/69320527
复制相似问题