如何获取group风格数据窗口的分组组号?(几个问题一并请教,在线等)

kvw3000 2003-10-13 04:27:29
几个问题请教各位大人:
1。如何获取group风格数据窗口的分组组号?
2。group风格数据窗口,如何根据计算列的结果排序,并通过数据窗口的文本控件显示顺序号,第一名、第二名......(还要求,比如,有两个并列第一的,则没有第二名,直接第三.....)
3。怎样在script中获取计算列的计算结果?
具体情况如下:
数据库中sale_info表结构和内容:
sale_name book_name
阿猫 霍元甲
阿猫 陈真传
阿狗 第一夜
阿狗 第二夜
阿狗 第三夜
阿狗 第四夜
阿猪 cell
阿猪 cell2
阿姨 酒精
......

group by sale_name

要求显示如下:

销售人员 书本名称 售书总计 排名
阿狗 第一夜
第二夜
第三夜
第四夜 4 1
阿猫 霍元甲
陈真传 2 2
阿猪 cell
cell2 2 2
阿姨 酒精 1 4
.......

谢谢各位先!
...全文
223 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kvw3000 2003-10-13
  • 打赏
  • 举报
回复
我怎么才能获得上一组的count(*)值?
kvw3000 2003-10-13
  • 打赏
  • 举报
回复
我现在的排序是这样做的,
datawindow的sql语句:
select sale_info.sale_name,
sale_info.book_name,
count(*)
from sale_info
group by sale_info.sale_name
order by count(*) desc
然后添加一个计算列:计算分组组号就是基本的顺序号
但不能处理好并列的情况,我打算在script中来处理:取出count(*)列的计算结果,判断是否和上一组的count(*)相等,如果相等,就把组号的计算控件显示值置成上一组的组号(或者加入文本控件显示),不知道可不可以,到底要怎么修改?
谢谢先!
kvw3000 2003-10-13
  • 打赏
  • 举报
回复
to jdsnhan(柳荫凉) :
是啊,通过了,谢谢
如果单一计算域
dw_1.object.com_1[1]
如果分组计算域
do while row > 0
ld_sum = dw_1.Object.com[row]
row = dw_1.FindGroupChange(row + 1, 1)
loop
请问这段代码的功能?
jdsnhan 2003-10-13
  • 打赏
  • 举报
回复
哦,明白了,空格的问题。这样写,肯定没问题:
cumulativeSum( if (分组列名[-1] = 分组列名[0],0,1)for all)
主要注意分组列名[-1] = 分组列名 等号前面要有空格。
为我上次的疏忽回答表示歉意。
jdsnhan 2003-10-13
  • 打赏
  • 举报
回复
不会啊!我以前都是这么用的。
kvw3000 2003-10-13
  • 打赏
  • 举报
回复
to jdsnhan(柳荫凉):
cumulativeSum(if(分组列名[-1]=分组列名[0],0,1)for all)
为什么输入expression时总是提示:column number is not invalid,
谢谢了
workhand 2003-10-13
  • 打赏
  • 举报
回复
3.怎样在script中获取计算列的计算结果?
//给计算列起个名字,直接dw_1.getitemstring(dw_1.getrow(),'columname')
jdsnhan 2003-10-13
  • 打赏
  • 举报
回复
丢了一个问题
3、如果单一计算域
dw_1.object.com_1[1]
如果分组计算域
do while row > 0
ld_sum = dw_1.Object.com[row]
row = dw_1.FindGroupChange(row + 1, 1)
loop
jdsnhan 2003-10-13
  • 打赏
  • 举报
回复
1、分组组号:
cumulativeSum(if(分组列名[-1]=分组列名[0],0,1)for all)
2、分组后排序有些困难,最好用语句控制。如:
dw_1.sort("要排序的")
dw_1.Sort()
dw_1.GroupCalc()
shentj 2003-10-13
  • 打赏
  • 举报
回复
没有全部解决,不过对你会有帮助:
//做分组组号
cumulativeSum( if( 分组列名 [-1] = 分组列名 [0],0,1) for all )
//做组内编号
GetRow() - First(GetRow() for Group 1) + 1

609

社区成员

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

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