pb交叉报表能让列平行显示吗

StillMiss 2011-08-22 05:51:34


这个图片的是客户给的文档,左边是部门。我使用的是交叉表


然后我做出来的 性别,年龄段,学历,虽然可以统计出来,但是都是一级级往下套,

跟文档上的平行显示不符合。我想问下有办法实现平行显示吗?

有同事跟我说用复合报表。

求指点
...全文
396 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobn_cn 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yyoinge 的回复:]
引用 6 楼 xiaobn_cn 的回复:
楼主可以建立多个交叉报表,然后用复合报表将这些交叉报表组装到一起就可以做为一个报表显示和打印了。
比如将人员级别做一个交叉报表,将籍贯做一个交叉报表,工龄做一个交叉报表.


这样做出来的复合报表,当中的各个子报表的宽带可以根据动态生成的列数自适应吗?还是得手动调整
[/Quote]

动态列数的报表设计如下:


-- 使用以下的数据源来制作交叉报表,rows选择dept_code,columns选择g1与g2,values使用v1(注意不是count(v1))即可。
select DEPT_CODE,'工作' g1,job g2,count(*) v1 from staff_DICT group by dept_code,job
union all
select DEPT_CODE,'籍贯' g1,address g2,count(*) from staff_DICT group by dept_code,address
union all
select DEPT_CODE,'工龄' g1,'1-20' g2,count(*) from staff_DICT group by dept_code,work_age where work_age <= 20
union all
select DEPT_CODE,'工龄' g1,'21-40' g2,count(*) from staff_DICT group by dept_code,work_age where work_age <= 40 and work_age > 20
union all
select DEPT_CODE,'工龄' g1,'40年以上' g2,count(*) from staff_DICT group by dept_code,work_age where work_age > 40
;
nvhaixx 2011-08-23
  • 打赏
  • 举报
回复
同意3楼意见,那个应该是用grid做吧!
yiguanjun 2011-08-23
  • 打赏
  • 举报
回复
3楼说的有道理
baiynije 2011-08-23
  • 打赏
  • 举报
回复
可以用存儲過程處理好資料再做交叉
yyoinge 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaobn_cn 的回复:]
楼主可以建立多个交叉报表,然后用复合报表将这些交叉报表组装到一起就可以做为一个报表显示和打印了。
比如将人员级别做一个交叉报表,将籍贯做一个交叉报表,工龄做一个交叉报表.
[/Quote]

这样做出来的复合报表,当中的各个子报表的宽带可以根据动态生成的列数自适应吗?还是得手动调整
xiaobn_cn 2011-08-23
  • 打赏
  • 举报
回复
楼主可以建立多个交叉报表,然后用复合报表将这些交叉报表组装到一起就可以做为一个报表显示和打印了。
比如将人员级别做一个交叉报表,将籍贯做一个交叉报表,工龄做一个交叉报表.
StillMiss 2011-08-22
  • 打赏
  • 举报
回复
后面不止这些哦。 左边部门是分级的。 都分到6级了。

然后右边的也有不少。比如人员级别,还有籍贯,工龄、 这样可以用gird吗?
StillMiss 2011-08-22
  • 打赏
  • 举报
回复
汗 谢谢上面那个哥们帮我弄了图。。。。我晕。
yyoinge 2011-08-22
  • 打赏
  • 举报
回复
其实你这个的标题中“男”、“女”、“20岁以下”等等,应该是比较固定的,没有必要用交叉报表
直接
select 部门.编码, 部门.名称, sum(case 员工.性别 when '男' then 1 else 0 end) as 男,
sum(case 员工.性别 when '女' then 1 else 0 end) as 女,
sum(case when 员工.年龄 < 20 then 1 else 0 end) as 20岁以下,
....
....
from 部门, 员工
where 部门.编码 = 员工.部门编码
group by 部门.编码, 部门.名称

做个grid类型的报表即可
yyoinge 2011-08-22
  • 打赏
  • 举报
回复
yyoinge 2011-08-22
  • 打赏
  • 举报
回复
图正确吗,怎么搭不上

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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