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

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
;


...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2010-10-13
  • 打赏
  • 举报
回复
很好用,之前没听说过这个函数。谢谢。
阿泰 2010-10-12
  • 打赏
  • 举报
回复
这样试试
做一个公式x1
HierarchyLevel (GroupingLevel ({表名.SELF_ID}))

把x1拖到界面上试试。

HierarchyLevel 返回每个成员在层次结构中的级别编号

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧