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,就自动继承前一年的数据。
表可以是静态也可以是动态的,在下是新手,请高手指教。
...全文
107 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 ....不知道还能这么写呢...

611

社区成员

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

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