PB中crosstab表继承上个tab中数据的问题

mike0392 2009-12-28 10:05:32
比如我现在的结果是(现在是动态列为年份,值是amount):
2006 2007 2008 2009
amount amount amount amount
3000 5000
可以看出2007和2009的数据为null,那么如果我要2007继承2006的amount数据,即3000;2009继承2008的5000,如何办到?
也就是说如果一年的amount为null,就自动继承前一年的数据。
表可以是静态也可以是动态的,在下是新手,请高手指教。
...全文
93 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pb8 2009-12-28
  • 打赏
  • 举报
回复
根据这个数据再做数据窗口数据就会直接有了~~
pb8 2009-12-28
  • 打赏
  • 举报
回复

//测试数据
create table tb_xx(
company varchar(10) not null ,
amount numeric(10,2) null ,
year numeric(4) not null,
primary key(company,year)
);


insert into tb_xx(company,amount,year)
SELECT 'COMPANY A',3000,2006
union
SELECT 'COMPANY A',5000,2008
union
SELECT 'COMPANY B',2000,2007
union
SELECT 'COMPANY B',8000,2009;

//呵呵,查询的SQL

select c.company,b.year,amount=(select top 1 amount from tb_xx where company=c.company and year<=b.year order by year desc)
from tb_xx a,(select distinct year from tb_xx) b,(select distinct company from tb_xx)c
where a.year=*b.year and a.company=*c.company
order by c.company,b.year
不是导演李安 2009-12-28
  • 打赏
  • 举报
回复
mark~
mike0392 2009-12-28
  • 打赏
  • 举报
回复
简单说,sql是
select company,year,amount
from table_name
然后crosstab形式建datawindow,rows选company,columns选year,values选amount
就出来类似以下:
2006 2007 2008 2009
amount amount amount amount
company A 3000 5000
company B 2000 8000
而我要的结果是:
2006 2007 2008 2009
amount amount amount amount
company A 3000 3000 5000 5000
company B 2000 2000 8000
也就是如果本年度值为null,就继承上一年的。
这么说清楚了么?我实在找不到什么好的方法解决。。。。
pb8 2009-12-28
  • 打赏
  • 举报
回复
要把你基础数据提供出来才好写的,这样太抽象了点~~
mike0392 2009-12-28
  • 打赏
  • 举报
回复
貌似很神,去试试,等一下把分给你,谢谢了啊
select top 1 amount ....不知道还能这么写呢...
相关推荐
PB是一个最快速的客户机/服务器开发工具,这一点已被无数次实践证实。   PB的快速来自以下几个方面:   一:数据窗口:   PowerBuilder仍然具有最强大的报功能,只有它具有可以直接在应用程序使用的报生成器。PowerBuild支持Crosstab、图形报,nested报以及其他一些吸引人的特性。   数据窗口将报打、录入修改功能集成在一起,画好一个数据窗口同时就完成了数据的增、删、查、改、打功能,其效率比DELPHI等提高了几倍以上。   而且由于数据窗口将数据处理生成SQL打包,PB程序员不必象一些DELPHI程序员一样进行拼将SQL的处理(DELPHI的DBEDIT,DBGRID普遍不受欢迎)。   数据窗口有PB的属性支持,在利用建模工具生成扩展属性,画数据窗口将以10秒单位计算工作量,而且利用它可以直接在应用生成报。   二:代码继承(PFC或自定义基类库):   PB对面向对象的继承、重载支持得很早,比VB在这方面强大了很多。   利用PB的代词(this、parent等)及数据窗口对象的内在属性,PB程序员可以很容易建立通用祖先模块。   而PFC提供了大量的附加功能,如果你怕PFC太过庞大,你也可以自己写一个基类库,现在我们公司就是这么做的。   三:建模工具:   PB有一个同胞兄弟POWERDESIGNER,如果大家还没用过的话,那么你将浪费很多的时间在一些重复劳动上。   PD可以将数据库的属性生成到PB的扩展属性,并可以直接生成应用。   如果是一些基本的数据操作模块,那么,在PDM设计完成后,不用进PB,在几分钟内,应用系统就已经完成了。   小结:所以,一个熟练PB程序员的工作效率等于三个DELPHI程序员两个VB程序员, 在开发数据库应用时,PB是首要选择。 从其最早版本开始,Powerbuider就把应用程序开发重心放在数据窗口上。而DW的最大作用是解决了客户界面与后台数据库之间的可视连接。由于Pb数据窗口的依赖性,以及数据窗口本身的自顶向下继承模型决定了PB不适于组件重用的开发环境。   但从另一方面来看,由于DW控件与DW对象之间的独立与内在联系规律,我们可以轻而易举地建立功能重用。 其他任何一种开发工具不可能生成如PB一般丰富的通用增、 删、查、改、打模块。   这更确立了PB在开发客户机/服务器应用方面的优势。
发帖
DataWindow

603

社区成员

PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
帖子事件
创建了帖子
2009-12-28 10:05
社区公告
暂无公告