IT分销/经销数据库

能用sql实现吗?请求db2高人得帮助

表1
acctno           bal         trandate
--------------------------------------------
102012011        81.23       2010-01-03
102012011       100.21       2010-01-05
102012011       481.23       2010-02-04
102012011      1300.21       2010-04-05
102012011       281.23       2010-04-07
102012011      1020.21       2010-05-01
102012011       821.23       2010-05-21
102012011       100.21       2010-05-26
表二
acctno           bal                trandate       trandate2
------------------------------------------------------
102012011        81.23       2010-01-03     2010-01-05
102012011       100.21       2010-01-05     2010-02-04
102012011       481.23       2010-02-04     2010-04-05
102012011      1300.21       2010-04-05     2010-04-07
102012011       281.23       2010-04-07     2010-05-01
102012011      1020.21       2010-05-01     2010-05-21
102012011       821.23       2010-05-21     2010-05-26
102012011       100.21       2010-05-26     2012-12-31

表一到表二的变换能用sql实现吗,如何解决这个问题请求db2高人的指导
参与21

21同行回答

cp007cp007软件开发工程师asiainfo-linkage
SELECT     a.*,     b.trandate2 FROM     (     SELECT         row_number() over(order by trand ...jamycym 发表于 2010-7-9 10:40     这个不错~~~~显示全部
SELECT
    a.*,
    b.trandate2
FROM
    (
    SELECT
        row_number() over(order by trand ...
jamycym 发表于 2010-7-9 10:40



    这个不错~~~~收起
互联网服务 · 2010-07-19
浏览735
ninthninth数据库管理员拓维信息系统股份有限公司
回复 16# zihowe     select acctno,bal,trandate1,LEAD(trandate1,1,'2012-12-31')OVER(ORDER BY trandate1) AS trandate2from(values(102012011,81.23,'2010-01-03'),(102012011,100.21,'2010-01-05'),(102012011,481.23,'2010-02-04'),(102012011,1300.21,...显示全部
回复 16# zihowe


    select acctno,bal,trandate1,
LEAD(trandate1,1,'2012-12-31')
OVER(ORDER BY trandate1) AS trandate2
from
(
values
(102012011,81.23,'2010-01-03'),
(102012011,100.21,'2010-01-05'),
(102012011,481.23,'2010-02-04'),
(102012011,1300.21,'2010-04-05'),
(102012011,281.23,'2010-04-07'),
(102012011,1020.21,'2010-05-01'),
(102012011,821.23,'2010-05-21'),
(102012011,100.21,'2010-05-26')
) as t(acctno,bal,trandate1)收起
互联网服务 · 2010-07-12
浏览763
jamycymjamycym软件开发工程师厦门用友烟草
最后一行如需默认值可把select 中的b.trandate2 改成。coalesce(b.trandate2,'2012-12-31')显示全部
最后一行如需默认值可把select 中的b.trandate2 改成。
coalesce(b.trandate2,'2012-12-31')收起
互联网服务 · 2010-07-09
浏览413
jamycymjamycym软件开发工程师厦门用友烟草
SELECT     a.*,     b.trandate2 FROM     (     SELECT         row_number() over(order by trandate) arow,         acctno,       &nb...显示全部
SELECT
    a.*,
    b.trandate2
FROM
    (
    SELECT
        row_number() over(order by trandate) arow,
        acctno,
        bal,
        trandate
    FROM
        表1
    )
    a
LEFT OUTER JOIN
    (
    SELECT
        row_number() over(order by trandate) brow,
        trandate trandate2
    FROM
        表1
    )
    b
    ON
    a.arow= b.arow-1收起
互联网服务 · 2010-07-09
浏览409
ninthninth数据库管理员拓维信息系统股份有限公司
在9.7中很容易实现的。一个lead函数就可以搞定显示全部
在9.7中很容易实现的。一个lead函数就可以搞定收起
互联网服务 · 2010-07-09
浏览427
synclijunsynclijun软件开发工程师topnet
只要明确trandate   和  trandate2的关系,就可以显示全部
只要明确trandate   和  trandate2的关系,就可以收起
互联网服务 · 2010-07-09
浏览402
yx0409yx0409数据仓库工程师中油瑞飞
表二增加的字段是怎么得来的?显示全部
表二增加的字段是怎么得来的?收起
互联网服务 · 2010-07-09
浏览350

    提问者

    zihowe
    系统工程师bank
    擅长领域: 数据库

    相关问题

    相关资料

    相关文章

    问题状态

  • 发布时间:2010-07-09
  • 关注会员:0 人
  • 问题浏览:11859
  • 最近回答:2010-08-28
  • X社区推广