水晶报表层次分组后,如何确定当前节点是第几级?
我用水晶报表进行层次分组,但在分组缩进时只能使用全部缩进一个距离的做法不美观,因此希望,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
;