/*规则是:
将T1表中的记录转到T2中,不使用游标是否有办法处理?
T1表中的第1记录填在T2中的startdate列上,第2条记录填写在enddate列上,
第3记录填在T2中的startdate列上,第4条记录填写在enddate列上
......
依次类推,如果是记录条数是奇数时,T2的Enddate列填写Null
*/
--1、测试表
create table T1(sdate datetime )
insert into T1 ( sdate ) VALUES ( '2008-09-20 22:15:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 22:16:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 22:17:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 23:03:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 23:04:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 23:05:00' )
insert into T1 ( sdate ) VALUES ( '2008-09-20 23:13:00' )
create table T2 (startdate datetime ,enddate datetime )
--2、数据转换
/*这里进行@T1到@T2的转换
........
*/
--3、查询数据表T2
select * from T2
--希望转换后查询 select * from T2 的结果如下
/*
startdate enddate
2008-09-20 22:15:00 2008-09-20 22:16:00
2008-09-20 22:17:00 2008-09-20 23:03:00
2008-09-20 23:04:00 2008-09-20 23:05:00
2008-09-20 23:13:00 null
*/
--删除测试
drop table T1
drop table T2SQL行转列
解决方案 »
- 请教如何定时导出SqlServer数据库中某张表的部分数据??
- sql2008无法使用更多的内存
- 英文操作系统windows2003+英文SQL2005 中文乱码问题
- ~~~~~~~~~SQL语句,请大家帮帮小弟,过来看看,马上给分~~~~~~~~
- SQL语法的or关键字的查询问题
- 怎样让我的日期字段只显示年份或只显示时间 而不完全显示(1940-01-01 00:00:00.000)
- 内连接和外连接有什么区别?还有,用 with 语名代替边连是否等效?
- 怎样把int转化成定长的varchar?
- 安装SQLServer2012时,到“功能选择”这一步时,一般初学者应该选择哪几项呢,全选的话很多功能根本用不上,请高手指点一二。
- select @name = i.un from inserted i
- 请教一个分组统计的问题
- ACCESS更新字段的时候能不能用要更新的字段做判断条件?
(
select *,ROW_NUMBER() over(order by T1.sdate) rn
from
T1
)
insert into T2
select t1.sdate startdate,t2.sdate enddate
from
cte t1 inner join cte t2 on t1.rn=t2.rn+1
where t1.rn%2=1
select * from T2
;with a
as
(
select *,ROW_NUMBER()over(order by sdate) as Row
from t1 )
select a.sdate as StartDate,b.sdate as EndDate
from a
left join a as b on a.Row=b.Row-1
where a.Row%2=1
/*
StartDate EndDate
2008-09-20 22:15:00.000 2008-09-20 22:16:00.000
2008-09-20 22:17:00.000 2008-09-20 23:03:00.000
2008-09-20 23:04:00.000 2008-09-20 23:05:00.000
2008-09-20 23:13:00.000 NULL
*/