水晶报表层次分组后,如何确定当前节点是第几级?

humanity humanity 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用水晶报表进行层次分组,但在分组缩进时只能使用全部缩进一个距离的做法不美观,因此希望,detail 是在 SELF_ID 列上缩进,但所有的其它的金额之类的要对齐,默认的自动缩进是所有的字段都缩进。

Q1: 有没有办法只缩进某一个列,比如 SELF_ID 列。
Q2: 如果Q1没有办法达到,有没有可能通过水晶报表计算出当前节点在层次中是第几级节点?下面有段 SQL 是在 DB2 中计算出级别来,但是好像数据量多的话很慢,如果水晶报表有办法的话就更好了,客户环境中水晶报表与数据库不在同一台机器,CPU 和磁盘负载可能分开到两个机器。


样表:
create table Tree (
CIF_NO varchar(20) not null,
SELF_ID integer not null,
PARENT_ID integer not null,
AMOUNT decimal(25,5) not null
);

insert into Tree values
('A', 1, 0, 25)
,('A', 2, 1, 10)
,('A', 3, 2, 4)
,('A', 4, 2, 6)
,('A', 5, 1, 3)
,('A', 6, 1, 12)
;

with node (CIF_NO, SELF_ID, PARENT_ID, LVL, AMOUNT) as (
select CIF_NO, SELF_ID, PARENT_ID, 0, AMOUNT
from Tree
where PARENT_ID = 0
union all
select d.CIF_NO, d.SELF_ID, d.PARENT_ID, p.LVL + 1, d.AMOUNT
from Tree d, node p
where d.CIF_NO = p.CIF_NO and d.PARENT_ID = p.SELF_ID
)
select * from node order by CIF_NO, LVL, SELF_ID
;


...全文
评论 2
收藏 已收藏
分享
返回顶部
humanity
图表区 4,818 成员 14,133 内容