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

humanity 2010-10-12 09:49:44
我用水晶报表进行层次分组,但在分组缩进时只能使用全部缩进一个距离的做法不美观,因此希望,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
;


...全文
74 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
humanity 2010-10-13
很好用,之前没听说过这个函数。谢谢。
回复
阿泰 2010-10-12
这样试试
做一个公式x1
HierarchyLevel (GroupingLevel ({表名.SELF_ID}))

把x1拖到界面上试试。

HierarchyLevel 返回每个成员在层次结构中的级别编号
回复
相关推荐
发帖
图表区
创建于2007-09-28

4808

社区成员

.NET技术 图表区
申请成为版主
帖子事件
创建了帖子
2010-10-12 09:49
社区公告
暂无公告