oracle查询列名 PB中如何得到Crosstab中的列名
PB中如何得到Crosstab中的列名
开发者在使用Crosstab数据窗口时会碰到一个问题 如果开发者想对其中的列内容进行处理时 不能用通用的方法得到Crosstab中的列名 使该操作无法运行 这是因为 Crosstab数据窗口中行列定义不同于其它的数据窗口 而且其列数是变化的 因此要得到Crosstab中的列名必须采用其它办法
下面以一个统计各工资段作者人数 按男女性别分别统计的Crosstab数据窗口静态风格为例探讨得到Crosstab中的列名

选择显示风格 定义数据源后 选择表 auths 中的列 author_code salary 和 sex ;用鼠标拖动Source Data列表框中的 sex 列到Columns列表框中 使 sex 列成为数据窗口的纵向统计列 用鼠标拖动Source Data列表框中的 salary 列到Rows列表框中 使 salary 列成为数据窗口的横向统计列 将salary改为int(salary/ )* ;用鼠标拖动Source Data列表框中的 author_code 列到列表框中 使 count(author_code for Crosstab) 列成为数据窗口的统计值 此时出现 CrossTab Definition 对话框
单击OK按钮 数据窗口显示
Crosstab数据窗口中的列名
Crosstab显示风格有静态和动态 如采用静态风格 则在 CrossTab Definition 对话框中取消选中 Rebuild columns at runtime 复选框 数据窗口的列名在Detail栏中 有一定规律可循
第一栏的列名分两种情况 一 CrossTab Definition 对话框中的所选的Rows的列名为表中的字段 如Rows=salary则第一栏的列名为 salary ;二 如 CrossTab Definition 对话框中的所选的Rows的列名为计算表达式 如int(salary/ )* 则第一栏的列名均为 row_column
其余各栏依次为所选Value的列名的排列 如Value为author_Code 则各栏依次 author_Code author_code_ author_code_ …… 栏的数目根据所选的Columns所能产生的数目而定 如Columns=sex 则只有两栏 author_Code author_code_ ;
最后一列的列名为 grand_count_ +所选Value名 如在此例中为 grand_count_author_code 如采用动态风格 则在 CrossTab Definition 对话框中选中 Rebuild columns at runtime 复选框 数据窗口的列名在Detail栏中 (图略)第一栏和最后一列的列名情况类似静态风格所述 也就不雷同了 中间各栏的列名情况与静态风格有所不同 依次为所选rows列名的排列 如rows为 salary 在此例中各栏依次为 salary salary_ ;
这样 问题就迎韧而解了 在得到Crosstab中的列名之后也就能自由地对其中的行列内容进行处理 通过上面的介绍 读者其实也能感觉到 计算机中许多不太容易实现的功能 只要好好分析 仔细琢磨 多试验几次 一般还是能找到有效的解决办法的
编辑推荐
ASP NET开发培训视频教程
lishixinzhi/Article/program/PB/201311/24612