佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1389|回复: 2

如何把转换以下records. (解决)

[复制链接]
发表于 17-9-2008 07:16 PM | 显示全部楼层 |阅读模式
Table : tblABC

ID            WeekA      WeekB
--------     ---------   -----------
15004      200823      NULL
15004      200824      200824
15004      200825      NULL
15004      200826      NULL
15004      200827      200827
15004      200828      NULL
15004      200829      NULL
15004      200830      200830
15004      200831      NULL
15004      200832      NULL
15004      200833      NULL


变成

ID            WeekA      WeekB
--------     ---------   -----------
15004      200823      200824
15004      200825      200827
15004      200828      200830
15004      200831      200833      
OR

ID            WeekA      WeekB
--------     ---------   -----------
15004      200823      200824
15004      200824      200824
15004      200825      200827
15004      200826      200827
15004      200827      200827
15004      200828      200830
15004      200829      200830
15004      200830      200830
15004      200831      200833      
15004      200832      200833      
15004      200833      200833

[ 本帖最后由 sawyih1 于 17-9-2008 11:20 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 17-9-2008 11:18 PM | 显示全部楼层
答案是:
with ed as ( select id, WeekB from tblABC where WeekB is not null
         union all select id, max(WeekA) from tblABC group by id
)
select ed.id
, ( select min(i.WeekA)
     from tblABC i
    WHERE i.id = ed.id
      and i.WeekA <= ed.WeekB
      and i.WeekA > coalesce(  ( SELECT max(x.WeekB) from ed x  where x.id = ed.id and x.WeekB < ed.WeekB )
                             , ( SELECT min(x.WeekA)-1 from tblABC x where x.ID = ed.ID )
                            )
  ) WeekA
, ed.WeekB
from ed
order by ed.id, ed.WeekB
回复

使用道具 举报

 楼主| 发表于 17-9-2008 11:21 PM | 显示全部楼层
如果要试用的话:用这个

create table  tblABC ( ID int            ,WeekA     int,  WeekB int )
go
set nocount on
insert into tblABC values (15004    ,  200823     , NULL)
insert into tblABC values (15004    ,  200824     , 200824)
insert into tblABC values (15004    ,  200825     , NULL)
insert into tblABC values (15004    ,  200826     , NULL)
insert into tblABC values (15004    ,  200827     , 200827)
insert into tblABC values (15004    ,  200828     , NULL)
insert into tblABC values (15004    ,  200829     , NULL)
insert into tblABC values (15004    ,  200830     , 200830)
insert into tblABC values (15004    ,  200831     , NULL)
insert into tblABC values (15004    ,  200832     , NULL)
insert into tblABC values (15004    ,  200833     , NULL)
insert into tblABC values (15006        ,  200823     , NULL)
insert into tblABC values (15006        ,  200824     , 200824)
insert into tblABC values (15006        ,  200825     , NULL)
insert into tblABC values (15006        ,  200826     , NULL)
insert into tblABC values (15006        ,  200827     , NULL)
insert into tblABC values (15006        ,  200828     , NULL)
insert into tblABC values (15006        ,  200829     , 200829)
insert into tblABC values (15006        ,  200830     , NULL)
insert into tblABC values (15006        ,  200831     , 200831)
insert into tblABC values (15006        ,  200832     , NULL)
insert into tblABC values (15006        ,  200833     , NULL)
go
with ed as ( select id, WeekB from tblABC where WeekB is not null
         union all select id, max(WeekA) from tblABC group by id
)
select ed.id
, ( select min(i.WeekA)
     from tblABC i
    WHERE i.id = ed.id
      and i.WeekA <= ed.WeekB
      and i.WeekA > coalesce(  ( SELECT max(x.WeekB) from ed x  where x.WeekB < ed.WeekB )
                             , ( SELECT min(x.WeekA)-1 from tblABC x    where x.ID = i.ID )
                            )
  ) WeekA
, ed.WeekB
from ed

go

drop table tblABC
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 04:08 PM , Processed in 0.126081 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表