在sql server 2005下如何搭建这样的视图?
表中的数据如下:
datetime name value
2007-6-6 01:00:00 fgh 345
2007-6-6 02:00:00 fgh 532
2007-6-6 03:00:00 fgh 457
......(省略,一共是一天24小时的数据)
2007-6-6 23:00:00 fgh 654
生成如下的视图:
date name 一点 二点 三点 ...... 二三点
2007-6-6 fgh 345 532 457 654
------解决方案--------------------create view v_test
as
select cast(convert(varchar(8),[datetime],112) as datetime) as date,
name,
max(case datediff(hour,[datetime]) when 1 then value end) as [一点],
max(case datediff(hour,[datetime]) when 2 then value end) as [二点],
...
max(case datediff(hour,[datetime]) when 23 then value end) as [二三点]
from tablename
group by cast(convert(varchar(8),[datetime],112) as datetime),
name
ps:少了0点
------解决方案--------------------create view v_test
as
select cast(convert(varchar(8),[datetime],112) as datetime) as date,
name,
max(case datediff(hour,[datetime]) when 1 then value end) as [一点],
max(case datediff(hour,[datetime]) when 2 then value end) as [二点],
...
max(case datediff(hour,[datetime]) when 23 then value end) as [二三点],
max(case datediff(hour,[datetime]) when 0 then value end) as [二四点]
from tablename
group by cast(convert(varchar(8),[datetime],112) as datetime),
name
呵呵,小改
------解决方案--------------------create table hiyun
(
[datetime] datetime,
name varchar(10),
value int
)
insert into hiyun
select
'2007-6-6 01:00:00 ', 'fgh ' , '345 ' union all select
'2007-6-6 02:00:00 ', 'fgh ' , '532 ' union all select
'2007-6-6 03:00:00 ' , 'fgh ', '457 '
select cast(convert(varchar(8),datetime,112) as datetime) as datetime ,
name,
max(case Datepart(hh,datetime) when 1 then value end) as [一点],
max(case Datepart(hh,datetime) when 2 then value end) as [二点],
......
max(case Datepart(hh,datetime) when 23 then value end) as [二三点],
max(case Datepart(hh,datetime) when 0 then value end) as [二四点]
from hiyun
group by cast(convert(varchar(8),datetime,112) as datetime) ,name