sql 问题,,????
我有一表,,t1格式为:
no time
001 2007-03-04 07:50
001 2007-03-04 13:25
001 2007-03-04 17:50
002 2007-03-04 07:50
002 2007-03-04 13:22
003 2007-03-04 17:56
我想把演变成另一个表,t2格式:
no date time1 time2 time3
001 2007-03-04 07:50 13:25 17:50
002 2007-03-04 07:50 13:22 17:56
t2的数据是从t1中来!!!如何做???
------解决方案--------------------/*
返回时间区域代码
*/
CREATE FUNCTION [dbo].[GetCheckOnCode]
(
@time VARCHAR(50)
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @str VARCHAR(50)
DECLARE @D SMALLDATETIME
SET @D=CONVERT(SMALLDATETIME,@time,8)
IF DATEDIFF(SS, '00:00:00 ',@D)> =0 AND DATEDIFF(SS, '12:00:00 ',@D) <=0
SET @str= 'time1 '
ELSE IF DATEDIFF(SS, '12:00:00 ',@D)> =0 AND DATEDIFF(SS, '17:00:00 ',@D) <=0
SET @str= 'time2 '
ELSE IF DATEDIFF(SS, '17:00:00 ',@D)> =0 AND DATEDIFF(SS, '23:00:00 ',@D) <=0
SET @str= 'time3 '
ELSE
SET @str= 'time4 '
RETURN @str
END
go
create table t1(no1 varchar(10),datetime1 datetime)
go
insert t1 values( '001 ', '2007-03-04 07:50 ')
insert t1 values( '001 ', '2007-03-04 13:25 ')
insert t1 values( '001 ', '2007-03-04 17:50 ')
insert t1 values( '002 ', '2007-03-04 07:50 ')
insert t1 values( '002 ', '2007-03-04 13:22 ')
insert t1 values( '002 ', '2007-03-04 17:56 ')
go
select * from t1
go
select no1,[dd],
[time1]=max(case when tag= 'time1 ' then tt end),
[time2]=max(case when tag= 'time2 ' then tt end),
[time3]=max(case when tag= 'time3 ' then tt end)
from (
select no1,[dd]=CONVERT(VARCHAR(10),datetime1,120),[tt]=CONVERT(VARCHAR(10),datetime1,8),
[tag]=[dbo].[GetCheckOnCode](CONVERT(VARCHAR(10),datetime1,8))
from t1
) t
group by no1,[dd]
go
drop table t1
go